public async Task <IActionResult> UpdateServiceRequestDetails(UpdateServiceRequestViewModel serviceRequest)
        {
            var originalServiceRequest = await _serviceRequestOperations.GetServiceRequestByRowKey(serviceRequest.RowKey);

            originalServiceRequest.RequestedServices = serviceRequest.RequestedServices;

            // Update Status only if user role is either Admin or Engineer
            // Or Customer can update the status if it is only in Pending Customer Approval.
            if (HttpContext.User.IsInRole(Roles.Admin.ToString()) ||
                HttpContext.User.IsInRole(Roles.Engineer.ToString()) ||
                (HttpContext.User.IsInRole(Roles.User.ToString()) && originalServiceRequest.Status == Status.PendingCustomerApproval.ToString()))
            {
                originalServiceRequest.Status = serviceRequest.Status;
            }

            // Update Service Engineer field only if user role is Admin
            if (HttpContext.User.IsInRole(Roles.Admin.ToString()))
            {
                originalServiceRequest.ServiceEngineer = serviceRequest.ServiceEngineer;
            }

            await _serviceRequestOperations.UpdateServiceRequestAsync(originalServiceRequest);

            if (HttpContext.User.IsInRole(Roles.Admin.ToString()) ||
                HttpContext.User.IsInRole(Roles.Engineer.ToString()) || originalServiceRequest.Status == Status.PendingCustomerApproval.ToString())
            {
                await _emailSender.SendEmailAsync(originalServiceRequest.PartitionKey,
                                                  "Your Service Request is almost completed!!!",
                                                  "Please visit the ASC application and review your Service request.");
            }

            return(RedirectToAction("ServiceRequestDetails", "ServiceRequest",
                                    new { Area = "ServiceRequests", Id = serviceRequest.RowKey }));
        }
        public async Task <IActionResult> UpdateServiceRequestDetails(UpdateServiceRequestViewModel serviceRequest)
        {
            var originalServiceRequest = await _serviceRequestOperations.GetServiceRequestByRowKey(serviceRequest.RowKey);

            // Descrição do serviço
            originalServiceRequest.RequestedServices = serviceRequest.RequestedServices;

            // Update Status only if user role is either Admin or Engineer
            // Or Customer can update the status if it is only in Pending Customer Approval.
            if ((HttpContext.User.IsInRole(Roles.Admin.ToString()) ||
                 HttpContext.User.IsInRole(Roles.Engineer.ToString())) ||
                (HttpContext.User.IsInRole(Roles.User.ToString()) &&
                 originalServiceRequest.Status == Status.PendingCustomerApproval.ToString()))
            {
                originalServiceRequest.Status = serviceRequest.Status;
            }

            // Update Service Engineer field only if user role is Admin
            if (HttpContext.User.IsInRole(Roles.Admin.ToString()))
            {
                originalServiceRequest.ServiceEngineer = serviceRequest.ServiceEngineer;
            }

            await _serviceRequestOperations.UpdateServiceRequestAsync(originalServiceRequest);

            return(RedirectToAction("ServiceRequestDetails", "ServiceRequest",
                                    new { id = serviceRequest.RowKey }));
        }
示例#3
0
        public async Task <IActionResult> UpdateServiceRequestDetails(UpdateServiceRequestViewModel serviceRequest)
        {
            var originalServiceRequest = _repo.GetBySpecificCondition($"Id == {serviceRequest.Id}");

            originalServiceRequest.RequestedServices = serviceRequest.RequestedServices;

            var isServiceRequestsStatusUpdated = false;

            // Update Status only if user role is either Admin or Engineer
            // Or Customer can update the status if it is only in Pending Customer Approval.
            if (HttpContext.User.IsInRole(Roles.Admin.ToString()) ||
                HttpContext.User.IsInRole(Roles.Engineer.ToString()) ||
                (HttpContext.User.IsInRole(Roles.User.ToString()) && originalServiceRequest.Status == Status.PendingCustomerApproval.ToString()))
            {
                if (originalServiceRequest.Status != serviceRequest.Status)
                {
                    isServiceRequestsStatusUpdated = true;
                }
                originalServiceRequest.Status = serviceRequest.Status;
            }

            // Update Service Engineer field only if user role is Admin
            if (HttpContext.User.IsInRole(Roles.Admin.ToString()))
            {
                originalServiceRequest.ServiceEngineer = serviceRequest.ServiceEngineer;
            }

            _repo.Update(originalServiceRequest);
            await _uow.SaveAsync();

            //if (HttpContext.User.IsInRole(Roles.Admin.ToString()) ||
            //    HttpContext.User.IsInRole(Roles.Engineer.ToString()) || originalServiceRequest.Status == Status.PendingCustomerApproval.ToString())
            //{
            //    await _emailSender.SendEmailAsync(originalServiceRequest.PartitionKey,
            //            "Your Service Request is almost completed!!!",
            //            "Please visit the ASC application and review your Service request.");
            //}

            if (isServiceRequestsStatusUpdated)
            {
                await SendSmsAndWebNotifications(originalServiceRequest);
            }

            return(RedirectToAction("ServiceRequestDetails", "ServiceRequest",
                                    new { Area = "ServiceRequests", Id = serviceRequest.Id }));
        }