public async Task <QueueResult> Handle(string data)
        {
            QueueResult result = new QueueResult(Data.Enums.ProcessType.AddTenant);

            if (string.IsNullOrEmpty(data))
            {
                result.ExceptionCode = ExceptionCode.MissingQueueData;
            }
            TenantQueue tenantQueue = null;

            try
            {
                tenantQueue = JsonConvert.DeserializeObject <TenantQueue>(data);
                TenantLogic tenantLogic = new TenantLogic(this.db, result.AdditionalData, this.loggerFactory);
                var         tenantId    = await tenantLogic.AddTenant(tenantQueue);

                result.AdditionalData.Add("tenantId", tenantId.ToString());
                result.AdditionalData.Add("name", tenantQueue.Name);

                result.Status = Status.Success;
            }
            catch (Exception ex)
            {
                HandleException(ex, result, tenantQueue);
            }
            return(result);
        }
        /* Event create */
        public void CreateEvent_NewTenant(TenantGenerator generator, TenantQueue queue)
        {
            // Compute event occurence time
            int time = Time + m_generatorsDistr[queue.Floor].GetValue();

            m_scheduler.Add(new NewTenantEvent(time, this, generator, queue));
        }
        public void CreateEvent_Pickup(Elevator elevator)
        {
            // Get associated queue
            TenantQueue queue = QueuesController.Get(elevator.CurrentFloor);

            if (queue.IsHallcall(elevator.Direction) &&
                elevator.FreePlace > 0)
            {
                m_scheduler.Add(new PickupEvent(Time, this, queue, elevator));
            }
        }
Exemple #4
0
        public async Task EditTenant(TenantQueue tenantQueue)
        {
            await CheckAddEdit(tenantQueue);

            Tenant tenant = await this.db.GetTenantById(tenantQueue.Id.Value).FirstOrDefaultAsync();

            tenant.Name   = tenantQueue.Name;
            tenant.Status = tenantQueue.Status;

            await this.db.SaveChangesAsync();

            this.logger.LogCustomInformation($"Tenant '{tenant.Name}' with id '{tenant.Id}' has successfully updated", tenantQueue.TenantId.ToString(), tenantQueue.UserPerformingAction.ToString());
        }
Exemple #5
0
        public async Task <Guid> AddTenant(TenantQueue tenantQueue)
        {
            await CheckAddEdit(tenantQueue);

            Tenant tenant = new Tenant()
            {
                Name   = tenantQueue.Name,
                Status = tenantQueue.Status
            };

            this.db.Tenants.Add(tenant);
            await this.db.SaveChangesAsync();

            this.logger.LogCustomInformation($"Tenant '{tenant.Name}' with id '{tenant.Id}' has successfully created", tenantQueue.TenantId.ToString(), tenantQueue.UserPerformingAction.ToString());
            return(tenant.Id);
        }
Exemple #6
0
        public async Task EditTenant(TenantVM tenant)
        {
            TenantQueue officeQueue = Mapper.Map <TenantVM, TenantQueue>(tenant, options => {
                options.AfterMap((src, dest) => dest.UserPerformingAction = this.UserId);
                options.AfterMap((src, dest) => dest.TenantId             = this.TenantId);
            });

            ProcessQueueHistory processQueueHistory = new ProcessQueueHistory()
            {
                Data      = JsonConvert.SerializeObject(officeQueue),
                AddedById = this.UserId,
                TenantId  = this.TenantId,
                Status    = Data.Enums.ResultStatus.Waiting,
                Type      = Data.Enums.ProcessType.EditTenant
            };

            await this.queueHandler.AddToQueue(processQueueHistory);
        }
 public void Link(TenantQueue queue)
 {
     m_queue          = queue;
     m_queue.Changed += Update;
 }
Exemple #8
0
 private async Task CheckAddEdit(TenantQueue tenantQueue)
 {
     await CheckForSameName(tenantQueue.Name.Trim(), tenantQueue.Id);
 }
 public void Remove(TenantQueue queue)
 {
     m_queues.Remove(queue.Floor);
 }
 public void Add(TenantQueue queue)
 {
     m_queues.Add(queue.Floor, queue);
 }