示例#1
0
        public async Task <IHttpActionResult> ConfirmRequest(EditRequestViewModel model)
        {
            try
            {
                string          userName = User.Identity.GetUserName();
                ApplicationUser u        = await GetApplicationUser(userName);

                var request = _UnitOfWork.RequestRepository.Find(model.Id);
                var inUse   =
                    _UnitOfWork.RequestRepository.All()
                    .Any(x => x.Status == RequestStatusEnum.Inprogress && x.AgentId == u.Id);
                if (inUse)
                {
                    return(BadRequest("This Agent Already in Joined in Another Request"));
                }
                request.AgentId = u.Id;

                request.Status = RequestStatusEnum.Inprogress;

                var notify = await SendNotification(request, NotificationType.AgentReceivedRequest.GetHashCode(), userName);

                await _UnitOfWork.CommitAsync();

                return(Ok());
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public EditRequestViewModel OpenRequest(int id, IPrincipal user)
        {
            Request request      = this.Context.Requests.Find(id);
            var     requestExist = request != null;

            if (requestExist)
            {
                var userIsAdmin = user.IsInRole("Admin");
                if (!userIsAdmin)
                {
                    Employee employee = this.Context.Employees
                                        .FirstOrDefault(e => e.ApplicationUser.UserName == user.Identity.Name);
                    var employeeExists = employee != null;
                    if (employeeExists)
                    {
                        var employeeIsOwner =
                            request.Owner.Id == employee.Id;
                        if (!employeeIsOwner)
                        {
                            return(null);
                        }
                    }
                }

                EditRequestViewModel viewModel =
                    Mapper.Instance.Map <Request, EditRequestViewModel>(request);
                return(viewModel);
            }

            return(null);
        }
示例#3
0
        public async Task <IActionResult> Create(int eventId)
        {
            var campaignEvent = await _mediator.SendAsync(new EventSummaryQuery { EventId = eventId });

            if (campaignEvent == null)
            {
                return(BadRequest("Invalid event id"));
            }

            var authorizableEvent = await _mediator.SendAsync(new AuthorizableEventQuery(campaignEvent.Id));

            if (!await authorizableEvent.UserCanManageChildObjects())
            {
                return(new ForbidResult());
            }

            var model = new EditRequestViewModel
            {
                OrganizationId   = campaignEvent.OrganizationId,
                OrganizationName = campaignEvent.OrganizationName,
                CampaignId       = campaignEvent.CampaignId,
                CampaignName     = campaignEvent.CampaignName,
                EventId          = campaignEvent.Id,
                EventName        = campaignEvent.Name
            };

            ViewBag.Title = CreateRequestTitle;

            return(View("Edit", model));
        }
示例#4
0
        public async Task EditPost_ReturnsCorrectViewAndViewModel_WhenPhoneNumberValidationFails()
        {
            const int eventId = 1;
            const int orgId   = 1;
            var       model   = new EditRequestViewModel {
                EventId = eventId, Phone = "111-111-1111"
            };

            var mediator = new Mock <IMediator>();

            mediator.Setup(mock => mock.SendAsync(It.IsAny <EventSummaryQuery>())).ReturnsAsync(new EventSummaryViewModel {
                Id = eventId, OrganizationId = orgId
            });
            mediator.Setup(mock => mock.SendAsync(It.IsAny <ValidatePhoneNumberRequestCommand>())).ReturnsAsync(new ValidatePhoneNumberResult {
                IsValid = false
            });
            mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableEventQuery>())).ReturnsAsync(new FakeAuthorizableEvent(false, false, false, true));
            mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableRequestQuery>())).ReturnsAsync(new FakeAuthorizableRequest(false, true, false, false));

            var sut = new RequestController(mediator.Object);

            var result = await sut.Edit(model) as ViewResult;

            Assert.Equal(result.ViewName, "Edit");
            Assert.IsType <EditRequestViewModel>(result.Model);
        }
示例#5
0
        public async Task EditPost_AddsCorrectErrorToModelState_WhenPhoneNumberValidationFails()
        {
            const int eventId = 1;
            const int orgId   = 1;
            var       model   = new EditRequestViewModel {
                EventId = eventId, Phone = "111-111-1111"
            };

            var mediator = new Mock <IMediator>();

            mediator.Setup(mock => mock.SendAsync(It.IsAny <EventSummaryQuery>())).ReturnsAsync(new EventSummaryViewModel {
                Id = eventId, OrganizationId = orgId
            });
            mediator.Setup(mock => mock.SendAsync(It.IsAny <ValidatePhoneNumberRequestCommand>())).ReturnsAsync(new ValidatePhoneNumberResult {
                IsValid = false
            });
            mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableEventQuery>())).ReturnsAsync(new FakeAuthorizableEvent(false, false, false, true));
            mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableRequestQuery>())).ReturnsAsync(new FakeAuthorizableRequest(false, true, false, false));

            var sut = new RequestController(mediator.Object);

            var result = await sut.Edit(model) as ViewResult;

            Assert.Equal(result.ViewData.ModelState.ErrorCount, 1);
            Assert.Equal(result.ViewData.ModelState[nameof(model.Phone)].ValidationState, ModelValidationState.Invalid);
            Assert.Equal(result.ViewData.ModelState[nameof(model.Phone)].Errors.Single().ErrorMessage, "Unable to validate phone number");
        }
示例#6
0
        public async Task <IActionResult> EditAsync(EditRequestViewModel model)
        {
            if (ModelState.IsValid)
            {
                ServiceRequest serviceRequest = await _oDServiceRequestRepository.GetServiceRequestIdAsync(model.ServiceRequestId);

                serviceRequest.ApplicantName   = model.FullName;
                serviceRequest.ApplicationDate = DateTime.Now;

                //make all application pending after editing
                serviceRequest.Status        = "Pending";
                serviceRequest.RejectMessage = null;
                serviceRequest.Location      = model.Location;

                if (model.Image != null)
                {
                    if (model.ExistingImageURL != null)
                    {
                        string filePath = Path.Combine(_webHostEnvironment.WebRootPath + model.ExistingImageURL);
                        System.IO.File.Delete(filePath);
                    }

                    serviceRequest.ImageUrl = ProcessUploadedImage(model.Image);
                }

                await _oDServiceRequestRepository.UpdateRequestAsync(serviceRequest);

                return(RedirectToAction("MyRequests", new { applicantId = serviceRequest.ApplicantId }));
            }
            return(View());
        }
示例#7
0
        public async Task EditPost_SendsEditRequestCommandWithCorrrectModel_WhenModelStateIsValid_AndEventIsNotNull_AndUserIsAuthorized_AndPhoneNumberIsValid()
        {
            const int eventId   = 1;
            const int orgId     = 1;
            var       viewModel = new EventSummaryViewModel {
                Id = eventId, OrganizationId = orgId
            };

            var mediator = new Mock <IMediator>();

            mediator.Setup(mock => mock.SendAsync(It.IsAny <EventSummaryQuery>())).ReturnsAsync(viewModel);
            mediator.Setup(mock => mock.SendAsync(It.IsAny <ValidatePhoneNumberRequestCommand>())).ReturnsAsync(new ValidatePhoneNumberResult {
                IsValid = true
            });
            mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableEventQuery>())).ReturnsAsync(new FakeAuthorizableEvent(false, false, false, true));
            mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableRequestQuery>())).ReturnsAsync(new FakeAuthorizableRequest(false, true, false, false));

            var sut = new RequestController(mediator.Object);

            var model = new EditRequestViewModel {
                EventId = eventId
            };

            await sut.Edit(model);

            mediator.Verify(x => x.SendAsync(It.Is <EditRequestCommand>(y => y.RequestModel == model)), Times.Once);
        }
        public async Task EditPost_SendsValidatePhoneNumberRequestWithCorrectData_WhenModelStateIsValid_AndEventIsNotNull_AndUserIsOrgAdmin()
        {
            const int eventId = 1;
            const int orgId   = 1;
            var       model   = new EditRequestViewModel {
                EventId = eventId, Phone = "111-111-1111"
            };

            var mediator = new Mock <IMediator>();

            mediator.Setup(mock => mock.SendAsync(It.IsAny <EventSummaryQuery>())).ReturnsAsync(new EventSummaryViewModel {
                Id = eventId, OrganizationId = orgId
            });
            mediator.Setup(mock => mock.SendAsync(It.IsAny <ValidatePhoneNumberRequestCommand>())).ReturnsAsync(new ValidatePhoneNumberResult {
                IsValid = true, PhoneNumberE164 = model.Phone
            });

            var sut = new RequestController(mediator.Object);

            sut.MakeUserAnOrgAdmin(orgId.ToString());

            await sut.Edit(model);

            mediator.Verify(x => x.SendAsync(It.Is <ValidatePhoneNumberRequestCommand>(y => y.PhoneNumber == model.Phone && y.ValidateType)), Times.Once);
        }
示例#9
0
        public EditRequestView(Request request)
        {
            InitializeComponent();
            EditRequestViewModel editRequestViewModel = new EditRequestViewModel(request);

            DataContext = editRequestViewModel;
        }
示例#10
0
 public EditRequest()
 {
     InitializeComponent();
     editRequestViewModel            = new EditRequestViewModel();
     editRequestViewModel.navigation = Navigation;
     this.BindingContext             = editRequestViewModel;
 }
示例#11
0
        public async Task <IActionResult> Edit(int id)
        {
            var request = repository.Requests.FirstOrDefault(r => r.Id == id);

            if (request != null)
            {
                var reviewers = new List <ApplicationUser>();
                foreach (var user in userManager.Users)
                {
                    if (await userManager.IsInRoleAsync(user, "Reviewer"))
                    {
                        reviewers.Add(user);
                    }
                }

                EditRequestViewModel editModel = new EditRequestViewModel();
                editModel.Id              = request.Id;
                editModel.Name            = request.Name;
                editModel.Description     = request.Description;
                editModel.RequestStatusId = request.RequestStatusId;
                editModel.ReviewerId      = request.ReviewerId;
                editModel.Statuses        = statusRepository.RequestStatuses;
                editModel.Reviewers       = reviewers;

                return(View(editModel));
            }
            return(RedirectToAction(nameof(Index)));
        }
示例#12
0
        public async Task <IActionResult> Edit(EditRequestViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("Edit", model));
            }

            var @event = await _mediator.SendAsync(new EventSummaryQuery { EventId = model.EventId });

            if (@event == null)
            {
                return(BadRequest("Invalid event id"));
            }

            if (!User.IsOrganizationAdmin(@event.OrganizationId))
            {
                return(Unauthorized());
            }

            var validatePhoneNumberResult = await _mediator.SendAsync(new ValidatePhoneNumberRequestCommand { PhoneNumber = model.Phone, ValidateType = true });

            if (!validatePhoneNumberResult.IsValid)
            {
                ModelState.AddModelError(nameof(model.Phone), "Unable to validate phone number");
                return(View("Edit", model));
            }

            await _mediator.SendAsync(new EditRequestCommand { RequestModel = model });

            return(RedirectToAction("Requests", "Event", new { id = model.EventId }));
        }
示例#13
0
        public async Task <IActionResult> Create(int eventId)
        {
            var campaignEvent = await _mediator.SendAsync(new EventSummaryQuery { EventId = eventId });

            if (campaignEvent == null)
            {
                return(BadRequest("Invalid event id"));
            }

            if (!User.IsOrganizationAdmin(campaignEvent.OrganizationId))
            {
                return(Unauthorized());
            }

            var model = new EditRequestViewModel
            {
                OrganizationId   = campaignEvent.OrganizationId,
                OrganizationName = campaignEvent.OrganizationName,
                CampaignId       = campaignEvent.CampaignId,
                CampaignName     = campaignEvent.CampaignName,
                EventId          = campaignEvent.Id,
                EventName        = campaignEvent.Name
            };

            ViewBag.Title = CreateRequestTitle;

            return(View("Edit", model));
        }
示例#14
0
        public ActionResult EditRequestView(Guid requestUID)
        {
            var model = new EditRequestViewModel()
            {
                RequestUID = requestUID
            };

            return(View(model));
        }
示例#15
0
 public IActionResult EditRequest(EditRequestViewModel req, int id, IFormFile reqfile)
 {
     if (!ModelState.IsValid)
     {
         return(View(req));
     }
     _userService.EditRequest(req, reqfile, id);
     return(Redirect("/Userpanel/Requests"));
 }
示例#16
0
        public async Task EditPost_SendsEventSummaryQuery_WithCorrectArguments()
        {
            var viewModel = new EditRequestViewModel {
                EventId = 1
            };
            var mediator = new Mock <IMediator>();
            var sut      = new RequestController(mediator.Object);
            await sut.Edit(viewModel);

            mediator.Verify(x => x.SendAsync(It.Is <EventSummaryQuery>(y => y.EventId == viewModel.EventId)));
        }
        public EditRequestViewModel GetEditRequestViewModel(int requestId)
        {
            EditRequestViewModel model = new EditRequestViewModel
            {
                RequestId               = requestId,
                DepartmentId            = _context.Requests.Find(requestId).DepartmentId,
                ProfessionViewModelList = GetProfessionViewModelListByRequestId(requestId),
                DatabaseHelper          = this
            };

            return(model);
        }
        public ActionResult Open(int id)
        {
            var user = HttpContext.User;
            EditRequestViewModel viewModel =
                this._service.OpenRequest(id, user);

            if (viewModel == null)
            {
                return(this.HttpNotFound());
            }

            return(View(viewModel));
        }
示例#19
0
        public async Task <IActionResult> EditAsync(int requestId)
        {
            ServiceRequest serviceRequest = await _oDServiceRequestRepository.GetServiceRequestIdAsync(requestId);

            EditRequestViewModel vm = new EditRequestViewModel
            {
                ServiceRequestId = serviceRequest.ServiceRequestId,
                ExistingImageURL = serviceRequest.ImageUrl,
                FullName         = serviceRequest.ApplicantName,
                Status           = serviceRequest.Status,
                RejectMessage    = serviceRequest.RejectMessage,
                ApplicantId      = serviceRequest.ApplicantId
            };

            return(View(vm));
        }
示例#20
0
        public async Task <IHttpActionResult> CancelAgentRequest(EditRequestViewModel model)
        {
            try
            {
                var request = _UnitOfWork.RequestRepository.Find(model.Id);
                request.Status  = RequestStatusEnum.New;
                request.AgentId = null;
                await _UnitOfWork.CommitAsync();

                return(Ok());
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public ViewResult Edit(int Id)
        {
            Request request = requestRepository.GetRequest(Id);
            var     model   = new EditRequestViewModel
            {
                RequestId         = request.RequestId,
                ApplicationUserID = request.ApplicationUserID,
                StartDate         = request.StartDate,
                PreviousStartDate = request.StartDate,
                EndDate           = request.EndDate,
                PreviousEndDate   = request.EndDate,
                SpecialCase       = request.SpecialCase
            };

            return(View(model));
        }
        public IActionResult DeclineEditRequest(int editRequestId)
        {
            var editRequest = _materialsService.GetEditRequest(editRequestId);

            if (editRequest == null)
            {
                return(RedirectToAction("ResourceNotFound", "Error", new { error = "sugestia edycji o podanym Id nie istnieje." }));
            }

            var vm = new EditRequestViewModel
            {
                EditRequestId = editRequestId,
                MaterialName  = editRequest.MaterialToUpdate.Name,
            };

            return(View(vm));
        }
示例#23
0
        public async Task <IActionResult> Edit(EditRequestViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("Edit", model));
            }

            var @event = await _mediator.SendAsync(new EventSummaryQuery { EventId = model.EventId });

            if (@event == null)
            {
                return(BadRequest("Invalid event id"));
            }

            if (model.Id == Guid.Empty)
            {
                var authorizableEvent = await _mediator.SendAsync(new AuthorizableEventQuery(model.EventId));

                if (!await authorizableEvent.UserCanManageChildObjects())
                {
                    return(new ForbidResult());
                }
            }
            else
            {
                var authorizableRequest = await _mediator.SendAsync(new AuthorizableRequestQuery(model.Id));

                if (!await authorizableRequest.UserCanEdit())
                {
                    return(new ForbidResult());
                }
            }

            var validatePhoneNumberResult = await _mediator.SendAsync(new ValidatePhoneNumberRequestCommand { PhoneNumber = model.Phone, ValidateType = true });

            if (!validatePhoneNumberResult.IsValid)
            {
                ModelState.AddModelError(nameof(model.Phone), "Unable to validate phone number");
                return(View("Edit", model));
            }

            await _mediator.SendAsync(new EditRequestCommand { RequestModel = model });

            return(RedirectToAction(nameof(EventController.Requests), "Event", new { id = model.EventId }));
        }
示例#24
0
        public void EditRequest(EditRequestViewModel req, IFormFile reqfile, int reqid)
        {
            var request = _context.Requests.Find(reqid);

            request.GroupID     = req.GroupID;
            request.RequestText = req.RequestText;
            if (reqfile != null)
            {
                request.RequestFileName = NameGenerator.GenerateUniqCode() + Path.GetExtension(reqfile.FileName);
                string reqpath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/RequestFiles", request.RequestFileName);
                using (var stream = new FileStream(reqpath, FileMode.Create))
                {
                    reqfile.CopyTo(stream);
                }
            }
            _context.Requests.Update(request);
            _context.SaveChanges();
        }
        public void UpdateRequest(EditRequestViewModel model)
        {
            List <ProfessionsInRequest> professionsInRequest = _context.ProfessionsInRequest.Where(p => p.RequestId == model.RequestId).ToList();
            List <PPIInRequest>         ppi = new List <PPIInRequest>();

            for (int i = 0; i < professionsInRequest.Count; i++)
            {
                _context.ProfessionsInRequest.Find(professionsInRequest[i].Id).EmployeesQuantity = model.ProfessionViewModelList[i].EmployeesQuantity;
                var professionsInRequestId = professionsInRequest[i].Id;
                ppi = _context.PPIInRequest.Where(p => p.ProfessionsInRequestId == professionsInRequestId).ToList();
                for (int j = 0; j < ppi.Count; j++)
                {
                    _context.PPIInRequest.Find(ppi[j].Id).QuantityOfPPI = model.ProfessionViewModelList[i].QuantityOfPPI[j].QuantityForOneEmployee;
                    _context.PPIInRequest.Find(ppi[j].Id).TotalQuantity = model.ProfessionViewModelList[i].QuantityOfPPI[j].TotalQuantity;
                }
                _context.SaveChanges();
            }
        }
示例#26
0
        public async Task <IHttpActionResult> InProgressRequest(EditRequestViewModel model)
        {
            try
            {
                string          userName = User.Identity.GetUserName();
                ApplicationUser u        = await GetApplicationUser(userName);

                var request = _UnitOfWork.RequestRepository.Find(model.Id);
                request.Status = RequestStatusEnum.Inprogress;
                await _UnitOfWork.CommitAsync();

                return(Ok(request));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
示例#27
0
        public IActionResult CreateEditSuggestion(int materialId)
        {
            var identityUserId = User.FindFirstValue(ClaimTypes.NameIdentifier);

            var materialToEdit = _service.GetMaterial(materialId);

            if (materialToEdit == null)
            {
                return(RedirectToAction("ResourceNotFound", "Error", new { error = "materiał o podanym Id nie istnieje." }));
            }

            if (identityUserId == materialToEdit.Creator.IdentityUserId)
            {
                return(RedirectToAction(
                           "ActionForbidden",
                           "Error",
                           new {
                    error = "nie masz uprawnień do tego działania. Jesteś autorem danego materiału - skorzystaj z opcji edycji"
                }));
            }

            ConfigureEditSuggestionBreadcrumbs(materialToEdit);

            var emvm = new EditMaterialViewModel
            {
                MaterialId  = materialId,
                Name        = materialToEdit.Name,
                Description = materialToEdit.Description
            };

            var vm = new EditRequestViewModel
            {
                EditMaterialViewModel = emvm,
                Files = materialToEdit.Files.Select(f => new FileViewModel
                {
                    FileId       = f.FileId,
                    FileName     = f.FileName,
                    RelativePath = f.RelativePath,
                    ContentType  = f.ContentType
                }).ToList()
            };

            return(View(vm));
        }
示例#28
0
        public async Task <IActionResult> Edit(EditRequestViewModel editViewModel)
        {
            if (ModelState.IsValid)
            {
                var model = repository.Requests.FirstOrDefault(r => r.Id == editViewModel.Id);
                if (model != null)
                {
                    model.Name            = editViewModel.Name;
                    model.Description     = editViewModel.Description;
                    model.ReviewerId      = editViewModel.ReviewerId;
                    model.RequestStatusId = editViewModel.RequestStatusId;
                    repository.SaveRequest(model);
                }

                return(RedirectToAction(nameof(Index)));
            }

            return(View(editViewModel));
        }
示例#29
0
        public async Task <IHttpActionResult> GetRequestDetails(EditRequestViewModel model)
        {
            try
            {
                var request = await _UnitOfWork.RequestRepository.GetRequestDetails(model.Id);

                if (request == null)
                {
                    return(BadRequest($"Request's User Is Removed"));
                }

                return(Ok(request));
            }
            catch (Exception ex)
            {
                ErrorSaver.SaveError(ex.Message);
                return(BadRequest(ex.Message));
            }
        }
        public IActionResult DeclineEditRequest(EditRequestViewModel vm)
        {
            if (!ModelState.IsValid)
            {
                return(View(vm));
            }

            var loggedModerator = _userService.FindByIdentityUserId(User.FindFirstValue(ClaimTypes.NameIdentifier));

            try
            {
                _materialsService.DeclineEditRequest(vm.EditRequestId, vm.DeclineReason);
            }
            catch (ArgumentException)
            {
                return(RedirectToAction("ResourceNotFound", "Error", new { error = "sugestia edycji o podanym Id nie istnieje." }));
            }

            return(RedirectToAction("EditSuggestions"));
        }