/// <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));
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        public async Task <IActionResult> UpdateSchedulingCode(int schedulingCodeId, [FromBody] UpdateSchedulingCode schedulingCodeDetails)
        {
            var result = await _schedulingCodeService.UpdateSchedulingCode(new SchedulingCodeIdDetails { SchedulingCodeId = schedulingCodeId }, schedulingCodeDetails);

            return(StatusCode((int)result.Code, result.Value));
        }
        /// <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>
        /// 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));
        }