// GET: ServiceRequest/Edit/5
        public ActionResult Edit(int?id)
        {
            ServiceRequestModel request = new ServiceRequestModel();

            InitializePageData();

            try
            {
                if (!id.HasValue)
                {
                    DisplayWarningMessage("Looks like, the ID is missing in your request");
                    return(RedirectToAction("List"));
                }

                if (!requestService.Exists(id.Value))
                {
                    DisplayWarningMessage($"Sorry, We couldn't find the Service Request with ID: {id.Value}");
                    return(RedirectToAction("List"));
                }

                ServiceRequestDto requestDto = requestService.GetByID(id.Value);
                request = Mapper.Map <ServiceRequestDto, ServiceRequestModel>(requestDto);
            }
            catch (Exception exp)
            {
                DisplayReadErrorMessage(exp);
            }

            return(View(request));
        }
        public void Should_Throw_When_User_Has_No_Permission_To_Update_Service_Request()
        {
            MockServiceRequestForUpdate();
            MockServiceRequestCategories();
            MockServiceRequestPriorities();
            MockServiceRequestStatuses();
            MockPermissioService();

            var serviceRequestDto = new ServiceRequestDto
            {
                Id          = 1,
                Description = "testDescription",
                PriorityId  = 1,
                ServiceRequestCategoryId = 1,
                Title    = "tetsTitle",
                StatusId = 2
            };

            var userAndOrg = new UserAndOrganizationDto
            {
                OrganizationId = 1,
                UserId         = "AnotherUserId"
            };

            Assert.ThrowsAsync <UnauthorizedAccessException>(async() => await _serviceRequestService.UpdateServiceRequestAsync(serviceRequestDto, userAndOrg));
        }
        public void Should_Throw_When_Editing_Kudos_Finished_Service_Request()
        {
            MockServiceRequestForUpdate();
            MockServiceRequestCategories();
            MockServiceRequestPriorities();
            MockServiceRequestStatuses();
            MockPermissioService();

            var serviceRequestDto = new ServiceRequestDto
            {
                Id          = 2,
                Description = "testDescription",
                PriorityId  = 1,
                ServiceRequestCategoryId = 1,
                Title    = "tetsTitle",
                StatusId = 1
            };

            var userAndOrg = new UserAndOrganizationDto
            {
                OrganizationId = 1,
                UserId         = "AdminId"
            };

            Assert.ThrowsAsync <ValidationException>(async() => await _serviceRequestService.UpdateServiceRequestAsync(serviceRequestDto, userAndOrg));
        }
        public async Task Should_Return_Successfully_Created_Service_Request()
        {
            MockServiceRequestCategories();
            MockServiceRequestPriorities();
            MockServiceRequestStatuses();

            var serviceRequestDto = new ServiceRequestDto
            {
                Description = "testDescription",
                PriorityId  = 1,
                ServiceRequestCategoryId = 1,
                Title = "tetsTitle"
            };

            var userAndOrg = new UserAndOrganizationDto
            {
                OrganizationId = 2,
                UserId         = "UserId"
            };

            await _serviceRequestService.CreateNewServiceRequestAsync(serviceRequestDto, userAndOrg);

            _serviceRequestsDbSet.Received(1).Add(Arg.Any <ServiceRequest>());
            await _uow.Received(1).SaveChangesAsync(false);
        }
        public async Task Should_Return_Successfully_Updated_Service_Request_Status()
        {
            MockServiceRequestForUpdate();
            MockServiceRequestCategories();
            MockServiceRequestPriorities();
            MockServiceRequestStatuses();
            MockPermissioService();

            var serviceRequestDto = new ServiceRequestDto
            {
                Id          = 1,
                Description = "testDescription",
                PriorityId  = 1,
                ServiceRequestCategoryId = 1,
                Title    = "tetsTitle",
                StatusId = 2
            };

            var userAndOrg = new UserAndOrganizationDto
            {
                OrganizationId = 1,
                UserId         = "AdminId"
            };

            await _serviceRequestService.UpdateServiceRequestAsync(serviceRequestDto, userAndOrg);

            var updatedServiceRequest = await _serviceRequestsDbSet.FirstAsync(x => x.Id == serviceRequestDto.Id);

            Assert.AreEqual(serviceRequestDto.StatusId, updatedServiceRequest.StatusId);

            await _uow.Received(1).SaveChangesAsync(false);
        }
Beispiel #6
0
        public List <ServiceRequestDto> GetAllRecords()
        {
            var servicerequestlist            = _serviceRequestContext.servicerequest.ToList();
            List <ServiceRequestDto> response = new List <ServiceRequestDto>();

            try
            {
                foreach (ServiceRequestModel srm in servicerequestlist)
                {
                    ServiceRequestDto srd = new ServiceRequestDto()
                    {
                        buildingCode     = srm.buildingCode,
                        currentStatus    = (Enum.Enums.CurrentStatus)srm.currentStatus,
                        description      = srm.description,
                        createdDate      = srm.createdDate,
                        createdBy        = srm.createdBy,
                        lastModifiedDate = srm.lastModifiedDate == null?DateTime.MinValue: srm.lastModifiedDate.Value,
                        id             = srm.id,
                        lastModifiedBy = srm.lastModifiedBy,
                    };
                    response.Add(srd);
                }
            }
            catch (Exception ex)
            {
            }
            return(response);
        }
Beispiel #7
0
        private async Task ValidateServiceRequestForUpdateAsync(ServiceRequestDto serviceRequest)
        {
            var isServiceRequestStatusIdCorrect = await _serviceRequestStatusDbSet.FirstOrDefaultAsync(x => x.Id == serviceRequest.StatusId);

            if (isServiceRequestStatusIdCorrect == null)
            {
                throw new ValidationException(ErrorCodes.ContentDoesNotExist, "Service request status does not exist");
            }
        }
Beispiel #8
0
        private async Task ValidateServiceRequestForCreateAsync(ServiceRequestDto newServiceRequest)
        {
            var isServiceRequestPriorityIdCorrect = await _serviceRequestPriorityDbSet.AnyAsync(x => x.Id == newServiceRequest.PriorityId);

            if (!isServiceRequestPriorityIdCorrect)
            {
                throw new ValidationException(ErrorCodes.ContentDoesNotExist, "Service request priority does not exist");
            }
        }
Beispiel #9
0
        public void Delete(ServiceRequestDto entity)
        {
            ServiceRequest buzEntity = Entities.FirstOrDefault(e => e.ServiceRequestID == entity.ServiceRequestID);

            buzEntity.IsDeleted = true;
            buzEntity.UpdateTimeStamp(entity.LoggedInUserName);
            Entities.Add(buzEntity);
            DataContext.Entry(buzEntity).State = EntityState.Modified;
            DataContext.SaveChanges();
        }
Beispiel #10
0
        public void Add(ServiceRequestDto entity)
        {
            int            statusID = DataContext.DropDownSubCategories.Where(c => c.SubCategoryName == "Email Sent").FirstOrDefault().SubCategoryID;
            ServiceRequest request  = CreateBusinessEntity(entity, true);

            request.RequestStatusID = statusID;
            request.IsEmailSent     = false;

            Entities.Add(request);
            DataContext.Entry(request).State = EntityState.Added;
            DataContext.SaveChanges();
        }
Beispiel #11
0
        private void MigrateEntity(ServiceRequestDto sourceEntity, ServiceRequest targetEntity)
        {
            targetEntity.CompletedDate    = sourceEntity.CompletedDate;
            targetEntity.RequestedDate    = sourceEntity.RequestedDate;
            targetEntity.RequestedSkill   = sourceEntity.RequestedSkill;
            targetEntity.ServiceRequestID = sourceEntity.ServiceRequestID;
            targetEntity.RequestStatusID  = sourceEntity.RequestStatusID;
            targetEntity.VendorID         = sourceEntity.VendorID;
            targetEntity.IsEmailSent      = sourceEntity.IsEmailSent;
            targetEntity.EmailMessage     = sourceEntity.EmailMessage;

            targetEntity.UpdateTimeStamp(sourceEntity.LoggedInUserName);
        }
Beispiel #12
0
        public async Task CreateNewServiceRequestAsync(ServiceRequestDto newServiceRequestDto, UserAndOrganizationDto userAndOrganizationDto)
        {
            await ValidateServiceRequestForCreateAsync(newServiceRequestDto);

            var serviceRequestStatusId = await _serviceRequestStatusDbSet
                                         .Where(x => x.Title.Equals("Open"))
                                         .Select(x => x.Id)
                                         .FirstAsync();

            var serviceRequestCategory = await _serviceRequestCategoryDbSet
                                         .FirstOrDefaultAsync(x => x.Id == newServiceRequestDto.ServiceRequestCategoryId);

            if (serviceRequestCategory == null)
            {
                throw new ValidationException(ErrorCodes.ContentDoesNotExist, "Service request category does not exist");
            }

            var timestamp = DateTime.UtcNow;

            var serviceRequest = new ServiceRequest
            {
                Description    = newServiceRequestDto.Description,
                Title          = newServiceRequestDto.Title,
                CreatedBy      = userAndOrganizationDto.UserId,
                ModifiedBy     = userAndOrganizationDto.UserId,
                EmployeeId     = userAndOrganizationDto.UserId,
                KudosAmmount   = newServiceRequestDto.KudosAmmount,
                OrganizationId = userAndOrganizationDto.OrganizationId,
                CategoryName   = serviceRequestCategory.Name,
                StatusId       = serviceRequestStatusId,
                PriorityId     = newServiceRequestDto.PriorityId,
                Created        = timestamp,
                Modified       = timestamp,
                PictureId      = newServiceRequestDto.PictureId
            };

            if (newServiceRequestDto.KudosShopItemId != null)
            {
                serviceRequest.KudosShopItemId = newServiceRequestDto.KudosShopItemId;
            }

            _serviceRequestsDbSet.Add(serviceRequest);
            await _uow.SaveChangesAsync(false);

            var srqDto = new CreatedServiceRequestDto {
                ServiceRequestId = serviceRequest.Id
            };

            _asyncRunner.Run <IServiceRequestNotificationService>(async notifier => await notifier.NotifyAboutNewServiceRequestAsync(srqDto), _uow.ConnectionName);
        }
Beispiel #13
0
        private ServiceRequest CreateBusinessEntity(ServiceRequestDto serviceRequestDto, bool isNewEntity = false)
        {
            ServiceRequest request = new ServiceRequest
            {
                CompletedDate    = serviceRequestDto.CompletedDate,
                RequestedDate    = serviceRequestDto.RequestedDate,
                RequestedSkill   = serviceRequestDto.RequestedSkill,
                RequestStatusID  = serviceRequestDto.RequestStatusID,
                ServiceRequestID = serviceRequestDto.ServiceRequestID,
                VendorID         = serviceRequestDto.VendorID,
                IsEmailSent      = serviceRequestDto.IsEmailSent,
                EmailMessage     = serviceRequestDto.EmailMessage
            };

            request.UpdateTimeStamp(serviceRequestDto.LoggedInUserName, true);

            return(request);
        }
        public ActionResult Edit(int id, ServiceRequestModel practice)
        {
            try
            {
                InitializePageData();

                if (ModelState.IsValid)
                {
                    ServiceRequestDto practiceDto = Mapper.Map <ServiceRequestModel, ServiceRequestDto>(practice);
                    requestService.Update(practiceDto);
                    DisplaySuccessMessage("Request status has been modified successfully");
                    return(RedirectToAction("List"));
                }
            }
            catch (Exception exp)
            {
                DisplayUpdateErrorMessage(exp);
            }
            return(View(practice));
        }
        public void Should_Throw_When_Category_Id_Does_Not_Exist()
        {
            MockServiceRequestCategories();
            MockServiceRequestPriorities();
            MockServiceRequestStatuses();

            var serviceRequestDto = new ServiceRequestDto
            {
                Description = "testDescription",
                PriorityId  = 1,
                ServiceRequestCategoryId = 21,
                Title = "tetsTitle"
            };

            var userAndOrg = new UserAndOrganizationDto
            {
                OrganizationId = 2,
                UserId         = "UserId"
            };

            Assert.ThrowsAsync <ValidationException>(async() => await _serviceRequestService.CreateNewServiceRequestAsync(serviceRequestDto, userAndOrg));
        }
Beispiel #16
0
        public ServiceRequestDto GetRecordById(Guid id)
        {
            ServiceRequestDto srd = null;
            var record            = _serviceRequestContext.servicerequest.Where(m => m.id == id)
                                    .FirstOrDefault();

            if (record != null)
            {
                srd = new ServiceRequestDto()
                {
                    buildingCode     = record.buildingCode,
                    description      = record.description,
                    createdDate      = record.createdDate,
                    lastModifiedDate = record.lastModifiedDate == null ? DateTime.MinValue : record.lastModifiedDate.Value,
                    createdBy        = record.createdBy,
                    currentStatus    = (Enum.Enums.CurrentStatus)record.currentStatus,
                    id             = record.id,
                    lastModifiedBy = record.lastModifiedBy
                };
            }

            return(srd);
        }
Beispiel #17
0
        public async Task UpdateServiceRequestAsync(ServiceRequestDto serviceRequestDto, UserAndOrganizationDto userAndOrganizationDto)
        {
            var serviceRequest = await _serviceRequestsDbSet
                                 .Include(x => x.Status)
                                 .FirstOrDefaultAsync(x => x.Id == serviceRequestDto.Id && x.OrganizationId == userAndOrganizationDto.OrganizationId);

            if (serviceRequest == null)
            {
                throw new ValidationException(ErrorCodes.ContentDoesNotExist, "Service request does not exist");
            }

            if (serviceRequest.Status.Title == ServiceRequestStatusDone && serviceRequest.CategoryName == ServiceRequestCategoryKudos)
            {
                throw new ValidationException(PremiumErrorCodes.ServiceRequestIsClosed, "Kudos request status is done");
            }

            await ValidateServiceRequestForCreateAsync(serviceRequestDto);
            await ValidateServiceRequestForUpdateAsync(serviceRequestDto);

            var serviceRequestCategory = await _serviceRequestCategoryDbSet.FirstOrDefaultAsync(x => x.Id == serviceRequestDto.ServiceRequestCategoryId);

            if (serviceRequestCategory == null)
            {
                throw new ValidationException(ErrorCodes.ContentDoesNotExist, "Service request category does not exist");
            }

            var isServiceRequestAdmin = await _permissionService.UserHasPermissionAsync(userAndOrganizationDto, AdministrationPermissions.ServiceRequest);

            var isServiceRequestCreator          = serviceRequest.EmployeeId == userAndOrganizationDto.UserId;
            var isServiceRequestCategoryAssignee = (await GetCategoryAssigneesAsync(serviceRequest.CategoryName)).Contains(userAndOrganizationDto.UserId);

            var statusHasBeenChanged = serviceRequest.StatusId != serviceRequestDto.StatusId && isServiceRequestAdmin;

            if (!isServiceRequestAdmin && !isServiceRequestCreator && !isServiceRequestCategoryAssignee)
            {
                throw new UnauthorizedAccessException();
            }

            if (isServiceRequestAdmin || isServiceRequestCategoryAssignee)
            {
                serviceRequest.Title        = serviceRequestDto.Title;
                serviceRequest.StatusId     = serviceRequestDto.StatusId;
                serviceRequest.CategoryName = serviceRequestCategory.Name;
                serviceRequest.KudosAmmount = serviceRequestDto.KudosAmmount;
            }

            serviceRequest.PriorityId  = serviceRequestDto.PriorityId;
            serviceRequest.Description = serviceRequestDto.Description;
            serviceRequest.PictureId   = serviceRequestDto.PictureId;
            serviceRequest.UpdateMetadata(userAndOrganizationDto.UserId);

            await _uow.SaveChangesAsync(false);

            if (!statusHasBeenChanged)
            {
                return;
            }

            var statusDto = new UpdatedServiceRequestDto
            {
                ServiceRequestId = serviceRequestDto.Id,
                NewStatusId      = serviceRequest.StatusId
            };

            _asyncRunner.Run <IServiceRequestNotificationService>(async notifier => await notifier.NotifyAboutServiceRequestStatusUpdateAsync(statusDto, userAndOrganizationDto), _uow.ConnectionName);
        }
Beispiel #18
0
 public void Update(ServiceRequestDto entity)
 {
     repository.Delete(entity);
 }
Beispiel #19
0
 public void Add(ServiceRequestDto entity)
 {
     repository.Add(entity);
 }
Beispiel #20
0
 public void Insert(ServiceRequestDto dto)
 {
     throw new System.NotImplementedException();
 }
Beispiel #21
0
        public ServiceResponseDto <TResultModel> SendRequest <TResultModel, TRequestModel>(ServiceRequestDto <TRequestModel> requestDto) where TResultModel : class
        {
            try
            {
                string serviceUrl = $"{requestDto.ServiceUrl}/{requestDto.ServiceMethodName}";

                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
                httpWebRequest.ContentType = "application/json";
                httpWebRequest.Method      = requestDto.RequestType;
                httpWebRequest.ServerCertificateValidationCallback = CertificationValidation;

                foreach (KeyValuePair <string, string> item in requestDto.HeaderParameters)
                {
                    httpWebRequest.Headers.Add(item.Key, item.Value);
                }

                if (requestDto.RequestType == WebRequestMethods.Http.Post && requestDto.RequestModel != null)
                {
                    JsonConvert.SerializeObject(requestDto.RequestModel, Formatting.None);

                    using (StreamWriter streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
                    {
                        streamWriter.Write(JsonConvert.SerializeObject(requestDto.RequestModel, Formatting.None));
                        streamWriter.Flush();
                        streamWriter.Close();
                    }
                }

                using (HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequest.GetResponse())
                {
                    using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream() ??
                                                                        throw new InvalidOperationException("Response stream was null")))
                    {
                        return(new ServiceResponseDto <TResultModel>
                        {
                            ResultViewModel =
                                JsonConvert.DeserializeObject <TResultModel>(streamReader.ReadToEnd())
                        });
                    }
                }
            }
            catch (WebException ex)
            {
                if (ex.Status == WebExceptionStatus.ProtocolError)
                {
                    if (ex.Response is HttpWebResponse)
                    {
                        return(new ServiceResponseDto <TResultModel>
                        {
                            ErrorModel =
                                JsonConvert.DeserializeObject <ResponseErrorDataViewModel>(
                                    new StreamReader(ex.Response.GetResponseStream() ??
                                                     throw new InvalidOperationException("Response stream was null"))
                                    .ReadToEnd())
                        });