예제 #1
0
        public Task AddSuperSubmitterAsync(string microsoftAccount, string firstName, string lastName)
        {
            using (var db = new WebGalleryDbContext())
            {
                var submitter = (from s in db.Submitters
                                 where s.MicrosoftAccount.Equals(microsoftAccount, StringComparison.OrdinalIgnoreCase)
                                 select s).FirstOrDefault();

                // If the super submitter to be added hasn't had a submittership yet, add a new one first in the Submitters table.
                if (submitter == null)
                {
                    submitter = new Submitter
                    {
                        MicrosoftAccount = microsoftAccount,
                        PersonalID       = string.Empty,
                        PersonalIDType   = 1,
                        IsSuperSubmitter = true
                    };
                    db.Submitters.Add(submitter);
                    db.SaveChanges();   // save to database for new submitter id.
                }
                else
                {
                    submitter.IsSuperSubmitter = true;
                }

                // For a new super submitter who has no record in table SubmitterContactDetails,
                // make a new one with the parameters firstName and lastName.
                // If the super submitter already has contact details in the table SubmittersContactDetails, we do nothing here.
                var contactDetail = (from c in db.SubmittersContactDetails
                                     where c.SubmitterID == submitter.SubmitterID
                                     select c).FirstOrDefault();

                if (contactDetail == null)
                {
                    contactDetail = new SubmittersContactDetail
                    {
                        SubmitterID = submitter.SubmitterID,
                        FirstName   = firstName,
                        LastName    = lastName
                    };
                    db.SubmittersContactDetails.Add(contactDetail);
                }

                db.SaveChanges();

                return(Task.FromResult(0));
            }
        }
예제 #2
0
        public Task CreateAsync(Submitter invitee, Submission submission, UnconfirmedSubmissionOwner invitation)
        {
            using (var db = new WebGalleryDbContext())
            {
                // remove invitation
                db.UnconfirmedSubmissionOwners.RemoveRange(from u in db.UnconfirmedSubmissionOwners
                                                           where u.RequestID == invitation.RequestID
                                                           select u);

                // if the invitee has no ownership for this app, add one
                var alreadyHasOwnership = db.SubmissionOwners.Any(o =>
                                                                  o.SubmissionID == submission.SubmissionID &&
                                                                  o.SubmitterID == invitee.SubmitterID);
                if (!alreadyHasOwnership)
                {
                    db.SubmissionOwners.Add(new SubmissionOwner
                    {
                        SubmissionID = submission.SubmissionID,
                        SubmitterID  = invitee.SubmitterID
                    });
                }
                db.SaveChanges();

                return(Task.FromResult(0));
            }
        }
예제 #3
0
        public Task RemoveInvitationAsync(Guid invitationGuid)
        {
            using (var db = new WebGalleryDbContext())
            {
                db.UnconfirmedSubmissionOwners.RemoveRange(from u in db.UnconfirmedSubmissionOwners where u.RequestID == invitationGuid select u);
                db.SaveChanges();

                return(Task.FromResult(0));
            }
        }
예제 #4
0
        public Task RemoveAsync(int submitterId, int submissionId)
        {
            using (var db = new WebGalleryDbContext())
            {
                db.SubmissionOwners.RemoveRange(from o in db.SubmissionOwners
                                                where o.SubmissionID == submissionId && o.SubmitterID == submitterId
                                                select o);
                db.SaveChanges();

                return(Task.FromResult(0));
            }
        }
예제 #5
0
        public Task <Submitter> SaveContactDetailAsync(string email, SubmittersContactDetail contactDetail)
        {
            using (var db = new WebGalleryDbContext())
            {
                var submitter = (from s in db.Submitters
                                 where s.MicrosoftAccount.Equals(email, StringComparison.OrdinalIgnoreCase)
                                 select s).FirstOrDefault();
                if (submitter == null)
                {
                    submitter = new Submitter
                    {
                        MicrosoftAccount = email,
                        PersonalID       = string.Empty,
                        PersonalIDType   = 1,
                        IsSuperSubmitter = null
                    };
                    db.Submitters.Add(submitter);
                    db.SaveChanges(); // save to database for new submitter id.
                }

                var contactDetailInDb = (from c in db.SubmittersContactDetails
                                         where c.SubmitterID == submitter.SubmitterID
                                         select c).FirstOrDefault();
                if (contactDetailInDb == null)
                {
                    contactDetail.SubmitterID = submitter.SubmitterID;
                    db.SubmittersContactDetails.Add(contactDetail);
                }
                else
                {
                    SyncContactDetailProperties(contactDetailInDb, contactDetail);
                }

                db.SaveChanges();

                return(Task.FromResult(submitter));
            }
        }
예제 #6
0
        private static void UpdateFileSizeForPackage(string packageUrl, int fileSize, int submissionId)
        {
            using (var db = new WebGalleryDbContext())
            {
                var packages = (from p in db.Packages
                                where p.SubmissionID == submissionId
                                select p).ToList();

                foreach (var p in packages.Where(p => p.PackageURL == packageUrl))
                {
                    p.FileSize = fileSize;
                }

                db.SaveChanges();
            }
        }
예제 #7
0
        public Task RemoveSuperSubmitterAsync(int submitterId)
        {
            using (var db = new WebGalleryDbContext())
            {
                var submitter = (from s in db.Submitters
                                 where s.SubmitterID == submitterId
                                 select s).FirstOrDefault();
                if (submitter != null)
                {
                    submitter.IsSuperSubmitter = false;
                    db.SaveChanges();
                }

                return(Task.FromResult(0));
            }
        }
예제 #8
0
        public Task UpdateMsaAsync(int submitterId, string microsoftAccount)
        {
            using (var db = new WebGalleryDbContext())
            {
                var submitter = (from s in db.Submitters
                                 where s.SubmitterID == submitterId
                                 select s).FirstOrDefault();
                if (submitter != null)
                {
                    submitter.MicrosoftAccount = microsoftAccount;
                }

                db.SaveChanges();

                return(Task.FromResult(0));
            }
        }
예제 #9
0
        public Task <UnconfirmedSubmissionOwner> CreateInvitationAsync(string firstName, string lastName, Submission submission)
        {
            using (var db = new WebGalleryDbContext())
            {
                var unconfirmedSubmissionOwner = new UnconfirmedSubmissionOwner
                {
                    SubmissionID            = submission.SubmissionID,
                    RequestID               = Guid.NewGuid(),
                    RequestDate             = DateTime.Now,
                    FirstName               = firstName,
                    LastName                = lastName,
                    IsSuperSubmitterRequest = false
                };

                db.UnconfirmedSubmissionOwners.Add(unconfirmedSubmissionOwner);
                db.SaveChanges();

                return(Task.FromResult(unconfirmedSubmissionOwner));
            }
        }
예제 #10
0
        public Task <Issue> SaveAsync(IssueType issueType, string appId, string issueDescription, string reporterFirstName, string reporterLastName, string reporterEmail)
        {
            using (var db = new WebGalleryDbContext())
            {
                var issue = new Issue {
                    IssueType         = (int)issueType,
                    AppId             = appId,
                    IssueDescription  = issueDescription,
                    ReporterFirstName = reporterFirstName,
                    ReporterLastName  = reporterLastName,
                    ReporterEmail     = reporterEmail,
                    DateReported      = DateTime.Now
                };

                db.Issues.Add(issue);
                db.SaveChanges();

                return(Task.FromResult(issue));
            }
        }