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; } } }
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); }
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); }