Пример #1
0
        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);
        }
Пример #2
0
        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());
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
        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());
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
 private async Task CheckAddEdit(TermQueue termQueue)
 {
     CheckLogic.CheckDates(termQueue.Start, termQueue.End);
     await CheckIfTermsAreOverlapping(termQueue);
 }