talawa-api icon indicating copy to clipboard operation
talawa-api copied to clipboard

Create Support for Event Agendas

Open palisadoes opened this issue 7 months ago • 75 comments

Is your feature request related to a problem? Please describe. Community based organizations will often need to have agendas for their events. Reasons for this requirement would include:

  1. The order of ceremony for a wedding
  2. The order of ceremony for a concert
  3. Agendas for committee meetings

Describe the solution you'd like We need the ability to make events have agendas. The agenda would have sequence of agenda items with the following characteristics:

  1. Title
  2. Description
  3. Agenda item type (See "Note" type below)
  4. Agenda item type information (For example if an organization creates a type called "Song, they may want to make this track the key of the music)
  5. Duration of the agenda item
  6. Multiple Attachments stored on the system
  7. Multiple URL links
  8. Agenda item "User" to indicate a speaker, performer or similar party
  9. Agenda item category which would come from a Agenda category list that is universal to the organization.
  10. Agenda section which would allow agenda items to be grouped together. The section will require:
    1. A description
    2. An ordered sequence of sections so that they can follow one another
    3. An ordered sequence of agenda items belonging to a section
  11. updatedBy - See https://github.com/PalisadoesFoundation/talawa-api/pull/1542
  12. updatedAt - See https://github.com/PalisadoesFoundation/talawa-api/pull/1542
  13. createdBy - See https://github.com/PalisadoesFoundation/talawa-api/pull/1542
  14. createdAt - See https://github.com/PalisadoesFoundation/talawa-api/pull/1542

We will need schema, mutations and queries created for:

  1. Agenda sections and their sequencing within an event
  2. Agenda items and their sequencing with a section
  3. Agenda item URLs
  4. Agenda item attachments
  5. Agenda categories within an organization

Other schema, mutation, query requirements:

  1. Mutations would include typical CRUD actions.
  2. Document the schema, mutations and query requirements well so that it exports with meaningful information to our automatically generated schema, mutations, and queries documentation page used by our developers.
    1. https://docs.talawa.io/docs/schema

There will also be a need for a special type of agenda item:

  1. Called a "Note"
  2. Contains a description
  3. No duration, no title, attachments, URLs, user
  4. Has all the other characteristics of an Agenda item in terms of sequencing
  5. Could be identified by a Note flag field in the Agenda schema

Therefore the schema will need an enum for the agenda item type which would cover regular vs note type items, with a consideration for future support of other item types

There are some additional requirements:

  1. When the first section is created, all existing agenda items must be tied to it while maintaining the agenda item order.
  2. Changing the sequencing of an agenda section must not alter the sequencing of the agenda items within each section.
  3. Changing the sequencing of agenda items must not alter:
    1. The sequencing of sections
    2. The sequencing of any other sections should other sections exist
  4. You will need to write valid tests for this work
  5. No other functionality must be affected

Describe alternatives you've considered

  • N/A

Approach to be followed (optional)

  • See above

Additional context

  1. This is a prerequisite for our menu of GSoC 2024 project ideas
  2. This issue would be best handled by someone who already has experience with updating our schema, mutations etc or can prove it in other scenarios.
  3. Please work with @xoldyckk on the details of this issue and the subsequent PR

Potential internship candidates

  • Please read this if you are planning to apply for a Palisadoes Foundation internship https://github.com/PalisadoesFoundation/talawa/issues/359

palisadoes avatar Dec 28 '23 05:12 palisadoes

  1. This has many inter-dependent database relationships.
  2. Do not ask to be assigned if you think this will be too challenging for your capabilities or available time.
  3. We would like this implemented within the next month

palisadoes avatar Dec 28 '23 05:12 palisadoes

Hi Can I work one this?

disha1202 avatar Dec 28 '23 06:12 disha1202

I can work on this issue. I have experience in Rest API, MongoDB, and building backend systems. I am currently exploring GraphQL. I want to contribute to something significant, and I will try my best to complete it.

aialok avatar Dec 28 '23 06:12 aialok

@disha1202 @aialok Both of you have at least two issues across repositories. Others need to get a chance

palisadoes avatar Dec 28 '23 06:12 palisadoes

@palisadoes

If you want, In addition to the ongoing work on Fix Recurring Events, I'm open to taking on this issue as Fix Recurring Events issue also require updating schema and mutation. Otherwise, If anyone else is interested in contributing or taking ownership of a this issue, please feel free to take this issue. At end, if there are no takers, consider me as the backup option. I'd be glad to step in and address the issue if needed

Thank you

Community-Programmer avatar Dec 28 '23 06:12 Community-Programmer

I would like to work on this issue. Although, i will be able to create and define schema, do mutations and queries and CRUD operations. But, as i am a new contributor, i will require some help. @Community-Programmer ( or anyone interested) can we collaborate on this issue and work together? Or maybe someone can help me a little bit on documentation stuff as i am a little new? Would love if someone could help me in the project specific stuff. Also, can i get a deadline as when to make a PR regarding this?

Atharva-Kanherkar avatar Dec 28 '23 06:12 Atharva-Kanherkar

@disha1202 @aialok Both of you have at least two issues across repositories. Others need to get a chance

I can unassign myself from one of the issues. As this issue is more impactful, the other issue is a good first issue, allowing another fellow contributor who is starting to work on it.

aialok avatar Dec 28 '23 06:12 aialok

Hi, can you please give me chance, I can do this I have experience with mongo and js, ts. Thanks

karankulshrestha avatar Dec 28 '23 08:12 karankulshrestha

@palisadoes can I get assigned to this issue.

AdityaRaimec22 avatar Dec 28 '23 09:12 AdityaRaimec22

@Atharva-Kanherkar

For sure, to whomever will be assigned this issue, I'm ready to help you as best I can with any problems you may face during the resolution of this issue.

Community-Programmer avatar Dec 28 '23 10:12 Community-Programmer

@Atharva-Kanherkar

For sure, to whomever will be assigned this issue, I'm ready to help you as best I can with any problems you may face during the resolution of this issue.

One issue, one assignee

palisadoes avatar Dec 28 '23 15:12 palisadoes

@Community-Programmer In retrospect, the recurring event solution is going to require significant effort. I'd prefer that you focus on that. We also should consider giving others a chance.

palisadoes avatar Dec 28 '23 15:12 palisadoes

@palisadoes

I understand the importance of addressing the recurring event solution and will prioritise my efforts towards resolving that issue. I appreciate your consideration in giving others a chance as well.

Thank you

Community-Programmer avatar Dec 28 '23 17:12 Community-Programmer

https://github.com/PalisadoesFoundation/talawa-api/blob/develop/.github%2Fworkflows%2Finspect.yml

There are two schema generators at the end of this GitHub action file. One of them exports markdown files that we commit to the Talawa Docs repo to create the Talawa website. It will have the information you require on how to document your code to make the markdown user friendly

palisadoes avatar Dec 30 '23 07:12 palisadoes

@palisadoes Thank you so much!

Atharva-Kanherkar avatar Dec 30 '23 07:12 Atharva-Kanherkar

How's progress on this going?

palisadoes avatar Dec 30 '23 18:12 palisadoes

@Atharva-Kanherkar

Make sure you add support for these fields in your schema and allow for logging as seen in this PR.

  1. updatedBy - See https://github.com/PalisadoesFoundation/talawa-api/pull/1542
  2. updatedAt - See https://github.com/PalisadoesFoundation/talawa-api/pull/1542
  3. createdBy - See https://github.com/PalisadoesFoundation/talawa-api/pull/1542
  4. createdAt - See https://github.com/PalisadoesFoundation/talawa-api/pull/1542

palisadoes avatar Dec 30 '23 21:12 palisadoes

The work is in progress, have been making schemas and mutations. I had a doubt if i may ask, can we submit a work in progress PR so that the community also gets a sense how I am working? is it allowed? @palisadoes

Atharva-Kanherkar avatar Dec 31 '23 05:12 Atharva-Kanherkar

  1. If you feel that the work could be split into discrete stages then the best approach would be to create PRs for each stage tied to this issue.
  2. PRs should be submitted when you are fairly certain of your solution and are sufficiently confident of defending your choices.
  3. Draft PRs are a burden for our reviewers as they get alerted to each commit. That is why we prefer PRs being submitted when only a few minor rectification commits are required before merging.
  4. Remember to include tests
  5. Contact @xoldyckk either here or on slack too. But the best way is to submit the PR.
  6. You can also ask the #talawa-api slack channel for feedback
  7. If you are uncertain of the requirements before submitting the PR, ask the questions here.

palisadoes avatar Dec 31 '23 06:12 palisadoes

@palisadoes okay sure. thank you!

Atharva-Kanherkar avatar Dec 31 '23 06:12 Atharva-Kanherkar

Agenda capability should be granted to whoever created the event, org Admins and Super Admins

palisadoes avatar Dec 31 '23 07:12 palisadoes

Progress till now :

Created MongoDB schemas for:

1.Agenda Items 2.Agenda Sections 3.Agenda Categories

Defined Fields for Agenda Items:

Title, descp, the event related to it(ref to "Event"), created by, updated by, etc. There is a bool field for isNote, which acts as a flag if it is a note type agenda item or not. The enumitemTypehas also been added, which asks if the agendatype is a note type or regular type. There is a field sequence, which is an integer, through which we will be seeing the order of the agenda item

Defined Fields for Agenda Section : Description, sequence of the agenda section, and the organization it belongs to (ref to organization)

Defined Fields for Agenda Category : Description, name and the organization it belongs to (ref to organization)

I have defined the graphQL types too. And have been consistent with the best practices of the project. Is there anything else which will be required in the schemas? Any more fields, references etc? ( i have covered all which were in the issue). I have begun writing the logic for sequencing etc. It will take some time. Thank you! @palisadoes @xoldyckk

Atharva-Kanherkar avatar Dec 31 '23 13:12 Atharva-Kanherkar

  1. This is hard to decipher.
  2. If you are ready and can defend your choices, then open a PR
  3. The schema will be easier to read and understand

palisadoes avatar Dec 31 '23 13:12 palisadoes

  1. This is hard to decipher.
  2. If you are ready and can defend your choices, then open a PR
  3. The schema will be easier to read and understand

I have just made the schemas right now. Is it okay to draft a PR if there are only schemas on it? I mean the work is in very initial stage. Sorry, if it was hard to decipher, ill keep in mind next time.

Atharva-Kanherkar avatar Dec 31 '23 13:12 Atharva-Kanherkar

  1. Yes, with an aim of merging the schema immediately or soon thereafter submission.
  2. We have to be respectful of volunteer time, they are reviewing dozens of PRs and the more complete each one is, the better.

palisadoes avatar Dec 31 '23 15:12 palisadoes

@palisadoes @xoldyckk This is an example of how i defined the mongoDB schemas. I Just committed for reference manually, otherwise i could not commit them with the CLI(Along with the graphql schemas and resolvers) But it gave me a bunch of errors. Can you please review this code and see what syntax i am going wrong with?

Please take a look

Atharva-Kanherkar avatar Jan 05 '24 08:01 Atharva-Kanherkar

@Atharva-Kanherkar

  1. Please ask the #talawa-api slack channel for assistance. We are reviewing 14 PRs in this repo alone.
  2. Open a PR independently, without asking permission, when you are confident of having a viable solution.

palisadoes avatar Jan 06 '24 00:01 palisadoes

@Atharva-Kanherkar Were you able to get assistance from the channel? There are other API GraphQL PRs that are currently open and others that are closed that you could use as examples. Contact the contributors associated with them on slack.

palisadoes avatar Jan 07 '24 04:01 palisadoes

@Atharva-Kanherkar Were you able to get assistance from the channel? There are other API GraphQL PRs that are currently open and others that are closed that you could use as examples. Contact the contributors associated with them on slack.

Yes, i reached out to many people on personal messages. Many of them helped out. Thank you for your suggestion, ill contact them too. I only have the work of testing the API and my work left, and will need small assistance for that. I will be contacting people for that. Thankyou!

Atharva-Kanherkar avatar Jan 07 '24 12:01 Atharva-Kanherkar

How's progress on this?

palisadoes avatar Jan 11 '24 00:01 palisadoes