예제 #1
0
        public ActionResult DeleteConfirmed(int id)
        {
            OrgRequest orgrequest = db.OrgRequests.Find(id);

            db.OrgRequests.Remove(orgrequest);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
예제 #2
0
 public ActionResult Edit(OrgRequest orgrequest)
 {
     if (ModelState.IsValid)
     {
         db.Entry(orgrequest).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(orgrequest));
 }
예제 #3
0
        public ActionResult Create(OrgRequest orgrequest, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                orgrequest.RequestDate = DateTime.Now;
                orgrequest.Progress    = "Processing";
                Volunteer    currVol = GetCurrentVolunteer();
                Organization org     = currVol.Organization;
                org.OrgRequests.Add(orgrequest);
                orgrequest.Organization = org;
                db.OrgRequests.Add(orgrequest);
                db.SaveChanges();
                return(Redirect(returnUrl));
            }

            return(View(orgrequest));
        }
예제 #4
0
        public ActionResult Edit(int id)
        {
            OrgRequest orgrequest = db.OrgRequests.Find(id);

            return(View(orgrequest));
        }
예제 #5
0
        public ViewResult Details(int id)
        {
            OrgRequest orgrequest = db.OrgRequests.Find(id);

            return(View(orgrequest));
        }
예제 #6
0
        public IHttpActionResult Post([FromBody] OrgRequestDTO model)
        {
            if (CurrentOrgUser.AccountType != AccountType.MobileAccount)
            {
                return(BadRequest("organisation requests can only be made by mobile users"));
            }

            if (string.IsNullOrEmpty(model.Name))
            {
                return(BadRequest("organisation name is required"));
            }

            var existingOrg = UnitOfWork.OrganisationRepository
                              .AllAsNoTracking
                              .Where(x => x.Name == model.Name)
                              .FirstOrDefault();

            if (existingOrg != null)
            {
                return(BadRequest("an organisation with this name already exists"));
            }

            var requestCount = UnitOfWork.OrgRequestsRepository
                               .AllAsNoTracking
                               .Count(x => x.OrgUserId == CurrentOrgUser.Id && x.Name == model.Name);

            if (requestCount > 0)
            {
                return(BadRequest("you have already requested this organisation"));
            }

            try
            {
                var orgRequest = new OrgRequest
                {
                    Name        = model.Name,
                    Address     = model.Address,
                    ContactName = model.ContactName,
                    Email       = model.Email,
                    TelNumber   = model.TelNumber,
                    Postcode    = model.Postcode,
                    OrgUserId   = CurrentOrgUser.Id
                };

                UnitOfWork.OrgRequestsRepository.InsertOrUpdate(orgRequest);

                var onRecord = UnitOfWork.OrganisationRepository
                               .AllAsNoTracking
                               .Where(x => x.Name == "OnRecord")
                               .SingleOrDefault();

                var rootIndex = WebHelpers.GetRootIndexPath();
                var url       = $"{Request.RequestUri.Scheme}://{Request.RequestUri.Authority}/{rootIndex}#!/organisations/requests/";

                var content = @"<p>User name: <b>" + CurrentOrgUser.UserName + @"</b></p>
                            <p>Organisation: <b>" + model.Name + @"</b></p>
                            <p><br></p>
                            <p>View <a href='" + url + @"'>organization requests</a> on the dashboard.</p>";

                if (onRecord.RootUserId.HasValue)
                {
                    var onRecordAdmin = UnitOfWork.OrgUsersRepository.AllAsNoTracking
                                        .Where(x => x.Id == onRecord.RootUserId.Value)
                                        .SingleOrDefault();

                    var email = new Email
                    {
                        To      = onRecordAdmin.Email,
                        Subject = $"A user has requested an organization",
                        Content = WebHelpers.GenerateEmailTemplate(content, "A user has requested an organization")
                    };

                    UnitOfWork.EmailsRepository.InsertOrUpdate(email);
                }

                // find email recipients
                var recipients = UnitOfWork.EmailRecipientsRepository
                                 .AllAsNoTracking
                                 .Where(x => x.OrgRequests == true)
                                 .ToList();

                foreach (var recipient in recipients)
                {
                    var recipientEmail = new Email
                    {
                        To      = recipient.OrgUser.Email,
                        Subject = $"A user has request an organization",
                        Content = WebHelpers.GenerateEmailTemplate(content, "A user has request an organization")
                    };

                    UnitOfWork.EmailsRepository.InsertOrUpdate(recipientEmail);
                }

                UnitOfWork.Save();
                MemoryCacher.DeleteStartingWith(CACHE_KEY);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
예제 #7
0
 public IActionResult Update(OrgRequest r) => Update(ActualUser.OrgId, r);
예제 #8
0
 public IActionResult Update(int orgId, OrgRequest r) =>
 Repo
 .Update(r.ToModel(orgId))
 .RefreshToken(ActualUser)
 .ToActionResult(x => new { Message = "Organization updated", x.Value.Bag.Token });
예제 #9
0
 public IActionResult Create(OrgRequest r) =>
 Repo
 .Create(r.ToModel())
 .ToActionResult(x => new { x.Value.Id, Message = "Organization created" });