public async Task <QueueResult> Handle(string data) { QueueResult result = new QueueResult(Data.Enums.ProcessType.DeleteTerm); if (string.IsNullOrEmpty(data)) { result.ExceptionCode = ExceptionCode.MissingQueueData; } TermQueue termQueue = null; try { termQueue = JsonConvert.DeserializeObject <TermQueue>(data); TermLogic termLogic = new TermLogic(this.db, result.AdditionalData, this.loggerFactory); await termLogic.DeleteTerm(termQueue); result.AdditionalData.Add("termId", termQueue.Id.ToString()); result.AdditionalData.Add("termStart", termQueue.Start.ToString()); result.AdditionalData.Add("termEnd", termQueue.End.ToString()); result.Status = Status.Success; } catch (Exception ex) { HandleException(ex, result, termQueue); } return(result); }
public async Task DeleteTerm(TermQueue termQueue) { Term term = await this.db.GetTermById(termQueue.TenantId, termQueue.Id.Value).FirstOrDefaultAsync(); this.db.Terms.Remove(term); await this.db.SaveChangesAsync(); this.logger.LogCustomInformation($"Term '{term.Start.ToString()} - {term.End.ToString()}' with id '{term.Id}' has successfully deleted", termQueue.TenantId.ToString(), termQueue.UserPerformingAction.ToString()); }
private async Task CheckIfTermsAreOverlapping(TermQueue termQueue) { var overlappingTerm = await this.db.Terms .Where(x => x.OfficeId == termQueue.OfficeId && x.Status != Data.Enums.ExistenceStatus.Deleted && x.Start < termQueue.End && termQueue.Start < x.End) .Include(x => x.Office) .FirstOrDefaultAsync(); if (overlappingTerm != null) { throw new TermIsOverlapping($"Term ({termQueue.Id ?? Guid.Empty}) that is starting {termQueue.Start.ToString()} and ending {termQueue.End.ToString()} in office ({termQueue.OfficeId}) is ovelapping with another term.", overlappingTerm.Id, overlappingTerm.Start, overlappingTerm.End, overlappingTerm.OfficeId, overlappingTerm.Office.Name); } }
public async Task EditTerm(TermVM term) { TermQueue termQueue = Mapper.Map <TermVM, TermQueue>(term, options => { options.AfterMap((src, dest) => dest.UserPerformingAction = this.UserId); options.AfterMap((src, dest) => dest.TenantId = this.TenantId); }); ProcessQueueHistory processQueueHistory = new ProcessQueueHistory() { Data = JsonConvert.SerializeObject(termQueue), AddedById = this.UserId, TenantId = this.TenantId, Status = Data.Enums.ResultStatus.Waiting, Type = Data.Enums.ProcessType.EditTerm }; await this.queueHandler.AddToQueue(processQueueHistory); }
public async Task EditTerm(TermQueue termQueue) { await CheckAddEdit(termQueue); Term term = await this.db.GetTermById(termQueue.TenantId, termQueue.Id.Value).FirstOrDefaultAsync(); term.Start = termQueue.Start; term.End = termQueue.End; term.Capacity = termQueue.Capacity; term.CoachId = termQueue.CoachId; term.Price = termQueue.Price; term.IntensityLevel = termQueue.IntensityLevel; term.OfficeId = termQueue.OfficeId; term.Status = termQueue.Status; await this.db.SaveChangesAsync(); this.logger.LogCustomInformation($"Term '{term.Start.ToString()} - {term.End.ToString()}' with id '{term.Id}' has successfully updated", termQueue.TenantId.ToString(), termQueue.UserPerformingAction.ToString()); }
public async Task DeleteTerm(Guid id) { TermQueue termQueue = new TermQueue() { Id = id, TenantId = this.TenantId, UserPerformingAction = this.UserId }; ProcessQueueHistory processQueueHistory = new ProcessQueueHistory() { Data = JsonConvert.SerializeObject(termQueue), AddedById = this.UserId, TenantId = this.TenantId, Status = Data.Enums.ResultStatus.Waiting, Type = Data.Enums.ProcessType.DeleteTerm }; await this.queueHandler.AddToQueue(processQueueHistory); }
public async Task <Guid> AddTerm(TermQueue termQueue) { await CheckAddEdit(termQueue); Term term = new Term() { Start = termQueue.Start, End = termQueue.End, Capacity = termQueue.Capacity, CoachId = termQueue.CoachId, IntensityLevel = termQueue.IntensityLevel, OfficeId = termQueue.OfficeId, Status = termQueue.Status, Price = termQueue.Price, TenantId = termQueue.TenantId }; this.db.Terms.Add(term); await this.db.SaveChangesAsync(); this.logger.LogCustomInformation($"Term '{term.Start.ToString()} - {term.End.ToString()}' with id '{term.Id}' has successfully created", termQueue.TenantId.ToString(), termQueue.UserPerformingAction.ToString()); return(term.Id); }
private async Task CheckAddEdit(TermQueue termQueue) { CheckLogic.CheckDates(termQueue.Start, termQueue.End); await CheckIfTermsAreOverlapping(termQueue); }