Пример #1
0
        public async Task <Guid> CreateOrUpdateShrimpCropManagementFactor(CreateShrimpCropManagementFactorDto dto)
        {
            _logger.LogInformation("start method create or update shirmp crop management factor");
            var shrimpCrop = await GetShrimpCropById(dto.ShrimpCropId);

            ValidateCreateShrimpCropManagementFactor(dto, shrimpCrop.FromDate, shrimpCrop.ToDate);

            DateTime now = DateTime.UtcNow;

            using (IDbTransaction transaction = this.DatabaseConnectService.BeginTransaction())
            {
                try
                {
                    ShrimpCropManagementFactor shrimpCropManagementFactor = dto.ToShrimpCropManagementFactor();
                    shrimpCropManagementFactor.CreatedBy = _sessionService.UserId;
                    shrimpCropManagementFactor.CreatedAt = now;

                    if (dto.IsCreateWork)
                    {
                        shrimpCropManagementFactor.Status = CropFactorStatus.HasWork.ToString();

                        if (dto.Id == null)
                        {
                            shrimpCropManagementFactor.Id = Guid.NewGuid();
                            await this.DatabaseConnectService.Connection.InsertAsync <ShrimpCropManagementFactor>(shrimpCropManagementFactor, x => x.AttachToTransaction(transaction));
                        }

                        await this.DatabaseConnectService.Connection.UpdateAsync <ShrimpCropManagementFactor>(shrimpCropManagementFactor, x => x.AttachToTransaction(transaction));

                        // create work
                        shrimpCropManagementFactor.ShrimpCrop = shrimpCrop.ToShrimpCrop();
                        await CreateWork(shrimpCropManagementFactor, transaction);

                        // create notification
                        Notification notification = shrimpCropManagementFactor.ToNotification();
                        notification.CreatedAt = now;
                        await this.DatabaseConnectService.Connection.InsertAsync <Notification>(notification, x => x.AttachToTransaction(transaction));
                    }
                    else
                    {
                        shrimpCropManagementFactor.Id = Guid.NewGuid();
                        await this.DatabaseConnectService.Connection.InsertAsync <ShrimpCropManagementFactor>(shrimpCropManagementFactor, x => x.AttachToTransaction(transaction));
                    }

                    transaction.Commit();

                    _logger.LogInformation("end method create or update shirmp crop management factor");

                    return(shrimpCropManagementFactor.Id);
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    throw;
                }
            }
        }
Пример #2
0
        private List <Work> GetWorksInsert(ShrimpCropManagementFactor dto)
        {
            TimeSpan days  = (TimeSpan)(dto.ToDate - dto.FromDate);
            var      lWork = new List <Work>();

            Work work = new Work();

            for (int i = 0; i <= days.TotalDays; i++)
            {
                work = dto.ToWork();
                work.ExecutionTime = ((DateTime)dto.ExecutionTime).AddDays(i);
                lWork.Add(work);
            }
            return(lWork);
        }
Пример #3
0
        private async Task CreateWork(ShrimpCropManagementFactor dto, IDbTransaction transaction)
        {
            dto.CreatedBy = _sessionService.UserId;

            if (dto.Frequency == ShrimpCropFrequency.Onetime.ToString())
            {
                Work workOneTime = dto.ToWork();
                workOneTime.ExecutionTime = (DateTime)dto.ExecutionTime;
                await this.DatabaseConnectService.Connection.InsertAsync <Work>(workOneTime, x => x.AttachToTransaction(transaction));
            }
            else
            {
                var query = new StringBuilder();
                query.Append("INSERT INTO bys_main.bys_work(id, name, value , execution_time, shrimp_crop_management_factor_id, created_at, created_by, modified_at, modified_by, farming_location_id, shrimp_breed_id, curator, status)");
                query.Append("VALUES (@Id, @Name, @Value, @ExecutionTime, @ShrimpCropManagementFactorId, @CreatedAt, @CreatedBy, @ModifiedAt, @ModifiedBy, @FarmingLocationId, @ShrimpBreedId, @Curator, @Status)");

                var works = GetWorksInsert(dto);
                this.DatabaseConnectService.Connection.Execute(query.ToString(), works, transaction);
            }
        }
        public static ShrimpCropManagementFactor ToShrimpCropManagementFactor(this CreateShrimpCropManagementFactorDto dto)
        {
            if (dto == null)
            {
                return(null);
            }

            ShrimpCropManagementFactor entity = new ShrimpCropManagementFactor();

            entity.Id = (Guid)(dto.Id == null ? Guid.Empty : dto.Id);

            entity.ShrimpCropId       = dto.ShrimpCropId;
            entity.Frequency          = dto.Frequency.Code;
            entity.ManagementFactorId = dto.ManagementFactor.Id;
            entity.Curator            = dto.Curator.Id;
            entity.Frequency          = dto.Frequency.Code;
            entity.ExecutionTime      = dto.ExecutionTime.FromUnixTimeStamp();
            entity.FromDate           = dto.FromDate == null ? null : dto.FromDate.FromUnixTimeStamp();
            entity.ToDate             = dto.ToDate == null ? null : dto.ToDate.FromUnixTimeStamp();

            return(entity);
        }
        public static ShrimpCropManagementFactorDto ToShrimpCropManagementFactorDto(this ShrimpCropManagementFactor entity)
        {
            if (entity == null)
            {
                return(null);
            }

            ShrimpCropManagementFactorDto dto = new ShrimpCropManagementFactorDto();

            dto.CopyPropertiesFrom(entity);

            dto.ManagementFactor = entity.ManagementFactor.ToShortManagementFactorDto();
            dto.Curator          = entity.User.ToUserDto();
            dto.Frequency        = entity.Frequency.ToDictionaryItemDto <ShrimpCropFrequency>();
            dto.Status           = entity.Status.ToDictionaryItemDto <CropFactorStatus>();
            dto.FromDate         = entity.FromDate.ToSecondsTimestamp();
            dto.ToDate           = entity.ToDate.ToSecondsTimestamp();
            dto.ModifiedAt       = entity.ModifiedAt.ToSecondsTimestamp();
            dto.ExecutionTime    = entity.ExecutionTime.ToSecondsTimestamp();

            return(dto);
        }
        public static Notification ToNotification(this ShrimpCropManagementFactor dto)
        {
            if (dto == null)
            {
                return(null);
            }

            Notification entity = new Notification();

            entity.Id                           = Guid.NewGuid();
            entity.Type                         = NotifyType.Notify.ToString();
            entity.ExecutionTime                = dto.ExecutionTime;
            entity.FromDate                     = dto.FromDate == null ? null : dto.FromDate;
            entity.ToDate                       = dto.ToDate == null ? null : dto.ToDate;
            entity.UserId                       = dto.Curator;
            entity.Frequency                    = dto.Frequency;
            entity.ManagementFactorId           = dto.ManagementFactorId;
            entity.FarmingLocationId            = dto.ShrimpCrop.FarmingLocationId;
            entity.ShrimpCropId                 = dto.ShrimpCropId;
            entity.ShrimpCropManagementFactorId = dto.Id;

            return(entity);
        }