Example #1
0
        private static string GetStatusTitle(ApplicationStatusEnum appEnum)
        {
            switch (appEnum)
            {
            case ApplicationStatusEnum.Draft: return("Черновик");

            case ApplicationStatusEnum.InWork: return("В работе");

            case ApplicationStatusEnum.InRepair: return("В ремонте");

            case ApplicationStatusEnum.DocumentCollect: return("Сбор документации");

            case ApplicationStatusEnum.Agreement: return("Согласование");

            case ApplicationStatusEnum.PaymentFormation: return("Формирование заявки на оплату");

            case ApplicationStatusEnum.Payment: return("На оплате");

            case ApplicationStatusEnum.ReWork: return("На доработке");

            case ApplicationStatusEnum.Paid: return("Оплачен");

            default: return("");
            }
        }
        private async Task <DateTime?> GetPlanedEndDatetime(Guid applicationId, ApplicationStatusEnum status)
        {
            var application = await _baseLogic.Of <Data.Context.Application>().GetById(applicationId);

            switch (status)
            {
            //case ApplicationStatusEnum.InRepair:
            //{
            //    //if (application.WithReplacement??false)
            //    //    return DateTime.Now.AddDays(19);
            //    //else
            //    //    return DateTime.Now.AddDays(9);
            //}
            case ApplicationStatusEnum.DocumentCollect:
                return(DateTime.Now.AddDays(10));

            case ApplicationStatusEnum.ReWork:
                return(DateTime.Now.AddDays(3));

            case ApplicationStatusEnum.Agreement:
                return(DateTime.Now.AddDays(2));

            default:
                return(null);
            }
        }
        public async Task <IActionResult> GetApplications(ApplicationStatusEnum status)
        {
            try
            {
                var res = await _applicationLogic.GetApplications(CurrentUserId, status);

                return(Ok(res));
            }
            catch (Exception e)
            {
                return(ExceptionResult(e));
            }
        }
        public async Task InsertLoanApplicationTaskUserPrevious(Guid applicationId, Guid userId, RoleEnum role, ApplicationStatusEnum status)
        {
            var planEndDate = await GetPlanedEndDatetime(applicationId, status);

            await _baseLogic.Of <Data.Context.ApplicationTask>().Add(
                new Data.Context.ApplicationTask
            {
                ApplicationId   = applicationId,
                UserId          = userId,
                RoleId          = _baseLogic.Of <Role>().GetQueryable(x => !x.IsDeleted && x.Value == role).Select(x => x.Id).FirstOrDefault(),
                AppointmentDate = DateTime.Now,
                PlanEndDate     = planEndDate,
                Status          = status
            });
        }
        public async Task <Guid> InsertLoanApplicationTaskUser(Data.Context.Application application, Guid userId, RoleEnum role, ApplicationStatusEnum status, string instanceId = null)
        {
            try
            {
                var currentApplication = await _baseLogic.Of <Data.Context.Application>().Base()
                                         .FirstOrDefaultAsync(a => a.Id == application.Id);

                currentApplication.Status = status;
                await _baseLogic.Of <Data.Context.Application>().Update(currentApplication);

                var planEndDate = await GetPlanedEndDatetime(application.Id, status);

                var _role = await _baseLogic.Of <Role>().GetQueryable(x => !x.IsDeleted && x.Value == role).Select(x => x.Id)
                            .FirstOrDefaultAsync();

                var result = await _baseLogic.Of <Data.Context.ApplicationTask>().Add(
                    new Data.Context.ApplicationTask
                {
                    ApplicationId   = application.Id,
                    UserId          = userId,
                    RoleId          = _role,
                    AppointmentDate = DateTime.Now,
                    PlanEndDate     = planEndDate,
                    Status          = status
                });

                return(result);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Example #6
0
        public async Task <object> GetApplications(Guid userId, ApplicationStatusEnum status)
        {
            var currentUserRole = await _baseLogic.Of <Role>().Base()
                                  .FirstOrDefaultAsync(a => a.UserRoles.Any(t => t.UserId == userId));


            var _ = _baseLogic.Of <Data.Context.ApplicationTask>().GetQueryable(x => !x.IsDeleted && !x.Application.IsDeleted)
                    .AsNoTracking();
            ApplicationStatusEnum applicationStatus = status;

            if (status != ApplicationStatusEnum.All)
            {
                switch (currentUserRole.Value)
                {
                case RoleEnum.AuditService when status == ApplicationStatusEnum.InWork:
                case RoleEnum.Economist when status == ApplicationStatusEnum.InWork:
                case RoleEnum.SalesDepartment when status == ApplicationStatusEnum.InWork:
                    applicationStatus = ApplicationStatusEnum.InWork;
                    _ = _.Where(a => a.Status == ApplicationStatusEnum.Agreement && a.UserId == userId);
                    break;

                case RoleEnum.TorManager when status == ApplicationStatusEnum.InWork:
                    applicationStatus = ApplicationStatusEnum.InWork;
                    _ = _.Where(a => a.Status == ApplicationStatusEnum.PaymentFormation && a.UserId == userId);
                    break;

                case RoleEnum.Treasurer when status == ApplicationStatusEnum.InWork:
                    applicationStatus = ApplicationStatusEnum.InWork;
                    _ = _.Where(a => a.Status == ApplicationStatusEnum.Payment && a.UserId == userId);
                    break;

                case RoleEnum.Counterparty:
                    _ = _.Where(a => a.Status == status && a.UserId == userId);
                    break;

                default:
                    _ = _.Where(a => a.Status == status);
                    break;
                }
            }
            else if (currentUserRole.Value == RoleEnum.Counterparty)
            {
                _ = _.Where(a => a.UserId == userId);
            }

            var res = _
                      .Select(x => new ApplicationOutDto()
            {
                Id              = x.Application.Id,
                Number          = x.Application.Number,
                DateCreated     = x.Application.CreatedDate.ToString("dd.MM.yyyy"),
                Status          = applicationStatus,
                StatusTitle     = GetStatusTitle(x.Status),
                CarriageNumber  = x.Application.CarriageNumber,
                ContractorsName = x.Application.Contractors.NameRu,
                DefectName      = x.Application.Defect.NameRu,
                RepairPlaceName = x.Application.RepairPlace.NameRu,
                IsExpired       = x.PlanEndDate != null && DateTime.Now.Subtract((DateTime)x.PlanEndDate).Days > 0,
                FinishDate      = x.Application.FinishDate != null? ((DateTime)x.Application.FinishDate).ToString("dd.MM.yyyy") :string.Empty,
                ReleaseDate     = x.Application.ReleaseDate.ToString("dd.MM.yyyy")
            })
                      .ToList();

            return(new
            {
                TotalItems = _.Count(),
                Items = res
            });
        }
Example #7
0
        /**
         * Based on a producer get the total number of donations (applications) their products have been a part of + the total price of these donations
         * Get for a specific application status
         * Get for either all time or past 'days' days
         */
        private async Task <(int, int)> GetDonationCountAndPriceOfStatusXForPastYDays(int userId, ApplicationStatusEnum status, bool allTime, int days = 0)
        {
            TimeSpan pastDays  = new TimeSpan(days, 0, 0, 0);
            DateTime sinceDate = DateTime.UtcNow - pastDays;

            var products = await(from p in _context.Products
                                 where p.UserId == userId
                                 select new
            {
                p.Price,
                Applications =
                    from a in p.Applications
                    where a.Status == status && (a.LastModified >= sinceDate || allTime)
                    select new { a.Id },
            }).ToListAsync();

            if (products.Count == 0)
            {
                return(0, 0);
            }

            var donations  = 0;
            var totalPrice = 0;

            foreach (var p in products)
            {
                var aCount = p.Applications.Count();
                donations  += aCount;
                totalPrice += p.Price * aCount;
            }

            return(donations, totalPrice);
        }