/// <summary>
        /// Creates the scheduling code.
        /// </summary>
        /// <param name="schedulingCodeDetails">The scheduling code details.</param>
        /// <returns></returns>
        public async Task <CSSResponse> CreateSchedulingCode(CreateSchedulingCode schedulingCodeDetails)
        {
            var schedulingCodes = await _repository.SchedulingCodes.GetSchedulingCodesByDescriptionAndIconOrRefId(new SchedulingCodeAttributes
            {
                IconId      = schedulingCodeDetails.IconId,
                Description = schedulingCodeDetails.Description,
                RefId       = schedulingCodeDetails.RefId
            });

            if (schedulingCodes?.Count > 0 && schedulingCodes[0].RefId != null && schedulingCodes[0].RefId == schedulingCodeDetails.RefId)
            {
                return(new CSSResponse($"SchedulingCode with id '{schedulingCodeDetails.RefId}' already exists.", HttpStatusCode.Conflict));
            }
            else if (schedulingCodes?.Count > 0 && schedulingCodes[0].Description == schedulingCodeDetails.Description)
            {
                return(new CSSResponse($"SchedulingCode with description '{schedulingCodeDetails.Description}' already exists.", HttpStatusCode.Conflict));
            }
            else if (schedulingCodes?.Count > 0 && schedulingCodes[0].IconId == schedulingCodeDetails.IconId)
            {
                return(new CSSResponse($"SchedulingCode with icon '{schedulingCodes[0].Icon}' already exists.", HttpStatusCode.Conflict));
            }

            var schedulingCodeRequest = _mapper.Map <SchedulingCode>(schedulingCodeDetails);

            _repository.SchedulingCodes.CreateSchedulingCode(schedulingCodeRequest);

            await _repository.SaveAsync();

            await _bus.SendCommand <CreateSchedulingCodeCommand>(MassTransitConstants.SchedulingCodeCreateCommandRouteKey,
                                                                 new
            {
                schedulingCodeRequest.Id,
                Name = schedulingCodeRequest.Description,
                schedulingCodeRequest.RefId,
                schedulingCodeRequest.PriorityNumber,
                schedulingCodeRequest.TimeOffCode,
                schedulingCodeRequest.IconId,
                SchedulingTypeCode = JsonConvert.SerializeObject(schedulingCodeDetails.SchedulingTypeCode),
                schedulingCodeRequest.ModifiedDate
            });

            return(new CSSResponse(new SchedulingCodeIdDetails {
                SchedulingCodeId = schedulingCodeRequest.Id
            }, HttpStatusCode.Created));
        }
Пример #2
0
        public async Task <IActionResult> CreateSchedulingCode([FromBody] CreateSchedulingCode schedulingCodeDetails)
        {
            var result = await _schedulingCodeService.CreateSchedulingCode(schedulingCodeDetails);

            return(StatusCode((int)result.Code, result.Value));
        }