/// <summary> /// Reverts the scheduling code. /// </summary> /// <param name="schedulingCodeIdDetails">The scheduling code identifier details.</param> /// <param name="schedulingCodeDetails">The scheduling code details.</param> /// <returns> /// <br /> /// </returns> public async Task <CSSResponse> RevertSchedulingCode(SchedulingCodeIdDetails schedulingCodeIdDetails, UpdateSchedulingCode schedulingCodeDetails) { var schedulingCode = await _repository.SchedulingCodes.GetAllSchedulingCode(schedulingCodeIdDetails); if (schedulingCode == null) { return(new CSSResponse(HttpStatusCode.NotFound)); } var schedulingCodes = await _repository.SchedulingCodes.GetAllSchedulingCodesByDescription(new SchedulingCodeNameDetails { Name = schedulingCodeDetails.Description }); if (schedulingCodes?.Count > 0 && schedulingCodes.IndexOf(schedulingCodeIdDetails.SchedulingCodeId) == -1) { return(new CSSResponse($"SchedulingCode with description '{schedulingCodeDetails.Description}' already exists.", HttpStatusCode.Conflict)); } _repository.SchedulingTypeCodes.RemoveSchedulingTypeCodes(schedulingCode.SchedulingTypeCode.ToList()); var schedulingCodeRequest = _mapper.Map(schedulingCodeDetails, schedulingCode); schedulingCodeRequest.ModifiedDate = schedulingCodeDetails.ModifiedDate; _repository.SchedulingCodes.UpdateSchedulingCode(schedulingCodeRequest); await _repository.SaveAsync(); return(new CSSResponse(HttpStatusCode.NoContent)); }
/// <summary>Gets all scheduling code.</summary> /// <param name="schedulingCodeIdDetails">The scheduling code identifier details.</param> /// <returns> /// <br /> /// </returns> public async Task <SchedulingCode> GetAllSchedulingCode(SchedulingCodeIdDetails schedulingCodeIdDetails) { var schedulingCode = FindByCondition(x => x.Id == schedulingCodeIdDetails.SchedulingCodeId) .Include(x => x.Icon) .Include(x => x.SchedulingTypeCode) .ThenInclude(x => x.SchedulingCodeType) .SingleOrDefault(); return(await Task.FromResult(schedulingCode)); }
/// <summary> /// Gets the scheduling code. /// </summary> /// <param name="schedulingCodeIdDetails">The scheduling code identifier details.</param> /// <returns></returns> public async Task <CSSResponse> GetSchedulingCode(SchedulingCodeIdDetails schedulingCodeIdDetails) { var schedulingCode = await _repository.SchedulingCodes.GetSchedulingCode(schedulingCodeIdDetails); if (schedulingCode == null) { return(new CSSResponse(HttpStatusCode.NotFound)); } var mappedSchedulingCode = _mapper.Map <SchedulingCodeDTO>(schedulingCode); return(new CSSResponse(mappedSchedulingCode, HttpStatusCode.OK)); }
/// <summary> /// Deletes the scheduling code. /// </summary> /// <param name="schedulingCodeIdDetails">The scheduling code identifier details.</param> /// <returns></returns> public async Task <CSSResponse> DeleteSchedulingCode(SchedulingCodeIdDetails schedulingCodeIdDetails) { var schedulingCode = await _repository.SchedulingCodes.GetSchedulingCode(schedulingCodeIdDetails); if (schedulingCode == null) { return(new CSSResponse(HttpStatusCode.NotFound)); } SchedulingCode schedulingCodeDetailsPreUpdate = new SchedulingCode { Description = schedulingCode.Description, RefId = schedulingCode.RefId, PriorityNumber = schedulingCode.PriorityNumber, TimeOffCode = schedulingCode.TimeOffCode, IconId = schedulingCode.IconId, SchedulingTypeCode = schedulingCode.SchedulingTypeCode, ModifiedBy = schedulingCode.ModifiedBy, IsDeleted = schedulingCode.IsDeleted, ModifiedDate = schedulingCode.ModifiedDate }; schedulingCode.IsDeleted = true; _repository.SchedulingCodes.UpdateSchedulingCode(schedulingCode); await _repository.SaveAsync(); UpdateSchedulingCode schedulingCodePreUpdate = null; var schedulingCodePreRequest = _mapper.Map(schedulingCodeDetailsPreUpdate, schedulingCodePreUpdate); await _bus.SendCommand <DeleteSchedulingCodeCommand>( MassTransitConstants.SchedulingCodeDeleteCommandRouteKey, new { schedulingCode.Id, Name = schedulingCodeDetailsPreUpdate.Description, schedulingCodeDetailsPreUpdate.RefId, schedulingCodeDetailsPreUpdate.PriorityNumber, schedulingCodeDetailsPreUpdate.TimeOffCode, schedulingCodeDetailsPreUpdate.IconId, SchedulingTypeCode = JsonConvert.SerializeObject(schedulingCodePreRequest.SchedulingTypeCode), ModifiedByOldValue = schedulingCodeDetailsPreUpdate.ModifiedBy, IsDeletedOldValue = schedulingCodeDetailsPreUpdate.IsDeleted, ModifiedDateOldValue = schedulingCodeDetailsPreUpdate.ModifiedDate, IsDeletedNewValue = schedulingCode.IsDeleted }); return(new CSSResponse(HttpStatusCode.NoContent)); }
/// <summary> /// The business implementation when the ISchedulingCodeCreateFailed occurs /// </summary> /// <param name="context"></param> /// <returns></returns> public async Task Consume(ConsumeContext <ISchedulingCodeCreateFailed> context) { SchedulingCodeIdDetails schedulingCodeIdDetails = new SchedulingCodeIdDetails { SchedulingCodeId = context.Message.Id }; UpdateSchedulingCode updateSchedulingCode = new UpdateSchedulingCode { RefId = context.Message.RefId, Description = context.Message.Name, PriorityNumber = context.Message.PriorityNumber, TimeOffCode = context.Message.TimeOffCode, IconId = context.Message.IconId, ModifiedDate = context.Message.ModifiedDate, SchedulingTypeCode = JsonConvert.DeserializeObject <List <SchedulingCodeTypes> >(context.Message.SchedulingTypeCode), IsDeleted = true, IsUpdateRevert = true }; await _schedulingCodeService.UpdateSchedulingCode(schedulingCodeIdDetails, updateSchedulingCode); }
/// <summary> /// Updates the scheduling code. /// </summary> /// <param name="schedulingCodeIdDetails">The scheduling code identifier details.</param> /// <param name="schedulingCodeDetails">The scheduling code details.</param> /// <returns></returns> public async Task <CSSResponse> UpdateSchedulingCode(SchedulingCodeIdDetails schedulingCodeIdDetails, UpdateSchedulingCode schedulingCodeDetails) { var schedulingCode = await _repository.SchedulingCodes.GetSchedulingCode(schedulingCodeIdDetails); if (schedulingCode == null) { return(new CSSResponse(HttpStatusCode.NotFound)); } var schedulingCodes = await _repository.SchedulingCodes.GetSchedulingCodesByDescriptionAndIconOrRefId(new SchedulingCodeAttributes { IconId = schedulingCodeDetails.IconId, Description = schedulingCodeDetails.Description, RefId = schedulingCodeDetails.RefId }); var result = schedulingCodes.Find(x => x.Id != schedulingCodeIdDetails.SchedulingCodeId); if (result != null && result.RefId != null && result.RefId == schedulingCodeDetails.RefId) { return(new CSSResponse($"SchedulingCode with id '{schedulingCodeDetails.RefId}' already exists.", HttpStatusCode.Conflict)); } else if (result != null && result.Description == schedulingCodeDetails.Description) { return(new CSSResponse($"SchedulingCode with description '{schedulingCodeDetails.Description}' already exists.", HttpStatusCode.Conflict)); } else if (result != null && result.IconId == schedulingCodeDetails.IconId) { return(new CSSResponse($"SchedulingCode with icon '{schedulingCodes[0].Icon}' already exists.", HttpStatusCode.Conflict)); } SchedulingCode schedulingCodeDetailsPreUpdate = null; if (!schedulingCodeDetails.IsUpdateRevert) { List <SchedulingTypeCode> schedulingTypeCodePreUpdated = new List <SchedulingTypeCode>(schedulingCode.SchedulingTypeCode); schedulingCodeDetailsPreUpdate = new SchedulingCode { RefId = schedulingCode.RefId, Description = schedulingCode.Description, PriorityNumber = schedulingCode.PriorityNumber, TimeOffCode = schedulingCode.TimeOffCode, IconId = schedulingCode.IconId, SchedulingTypeCode = schedulingTypeCodePreUpdated, ModifiedBy = schedulingCode.ModifiedBy, IsDeleted = schedulingCode.IsDeleted, ModifiedDate = schedulingCode.ModifiedDate }; } _repository.SchedulingTypeCodes.RemoveSchedulingTypeCodes(schedulingCode.SchedulingTypeCode.ToList()); var schedulingCodeRequest = _mapper.Map(schedulingCodeDetails, schedulingCode); if (schedulingCodeDetails.IsUpdateRevert) { schedulingCodeRequest.ModifiedDate = schedulingCodeDetails.ModifiedDate; } _repository.SchedulingCodes.UpdateSchedulingCode(schedulingCodeRequest); await _repository.SaveAsync(); if (!schedulingCodeDetails.IsUpdateRevert) { UpdateSchedulingCode schedulingCodePreUpdate = null; var schedulingCodePreRequest = _mapper.Map(schedulingCodeDetailsPreUpdate, schedulingCodePreUpdate); await _bus.SendCommand <UpdateSchedulingCodeCommand>( MassTransitConstants.SchedulingCodeUpdateCommandRouteKey, new { schedulingCodeRequest.Id, NameOldValue = schedulingCodeDetailsPreUpdate.Description, RefIdOldValue = schedulingCodeDetailsPreUpdate.RefId, PriorityNumberOldValue = schedulingCodeDetailsPreUpdate.PriorityNumber, TimeOffCodeOldValue = schedulingCodeDetailsPreUpdate.TimeOffCode, IconIdOldValue = schedulingCodeDetailsPreUpdate.IconId, SchedulingTypeCodeOldValue = JsonConvert.SerializeObject(schedulingCodePreRequest.SchedulingTypeCode), ModifiedByOldValue = schedulingCodeDetailsPreUpdate.ModifiedBy, ModifiedDateOldValue = schedulingCodeDetailsPreUpdate.ModifiedDate, IsDeletedOldValue = schedulingCodeDetailsPreUpdate.IsDeleted, NameNewValue = schedulingCodeRequest.Description, RefIdNewValue = schedulingCodeRequest.RefId, IsDeletedNewValue = schedulingCodeRequest.IsDeleted }); } return(new CSSResponse(HttpStatusCode.NoContent)); }