Esempio n. 1
0
        public ResponseModel UpdateSchedulingStatus(UpdateSchedulingStatusModel model)
        {
            var resp = new ResponseModel();

            try
            {
                if (model.NewStatus < 0 || (int)model.NewStatus > 1)
                {
                    resp.Message = "Novo status inválido";
                    return(resp);
                }

                Scheduling scheduling = _schedulingRepository.GetById(Guid.Parse(model.SchedulingId));
                if (scheduling == null)
                {
                    resp.Message = "Não foi possível encontrar o agendamento";
                    return(resp);
                }

                if (model.NewStatus == SchedulingStatus.Canceled)
                {
                    Policy   policy      = _schedulingRepository.GetCompanyPolicyBySchedulingId(Guid.Parse(model.SchedulingId));
                    DateTime now         = DateTimeUtil.UtcToBrasilia();
                    DateTime limitCancel = scheduling.StartTime.AddHours(-(policy.LimitCancelHours));
                    int      compare     = DateTime.Compare(now, limitCancel);
                    if (compare >= 0)
                    {
                        resp.Message = "Não é possível realizar o cancelamento." +
                                       "O Horário limite para cancelamento era: " + limitCancel;
                        return(resp);
                    }
                }

                scheduling.Status        = model.NewStatus;
                scheduling.LastUpdatedAt = DateTimeUtil.UtcToBrasilia();
                _schedulingRepository.Edit(scheduling);

                resp.Success = true;
                resp.Message = "Atualizado com sucesso";
            }
            catch (Exception)
            {
                resp.Message = "Não foi possível atualizar o status do agendamento";
            }

            return(resp);
        }