public ResponseMessage UpdatePeriod(PeriodEntity periodUpdate)
        {
            ResponseMessage response = new ResponseMessage();

            using (var trans = db.Database.BeginTransaction())
            {
                try
                {
                    Period period = db.Periods.Find(periodUpdate.PeriodId);
                    period.Amount       = periodUpdate.Amount;
                    period.AmountReutrn = periodUpdate.AmountReutrn;
                    db.SaveChanges();
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    Console.Error.WriteLine(ex.Message);
                    response.MessageText = ResponseMessage.MSG_CANNOT_CONNECT_TO_THE_DATABASE;
                    response.Data        = null;
                    return(response);
                }
            }
            return(response);
        }
        public ResponseMessage UpdateTransferPeriod(PeriodEntity periodTransfer)
        {
            ResponseMessage response = new ResponseMessage();

            using (var trans = db.Database.BeginTransaction())
            {
                try
                {
                    Period period = db.Periods.Single(p => p.Year == (periodTransfer.Year + 1) &&
                                                      p.ProjectId.Equals(periodTransfer.ProjectId));
                    period.AmountForward  = periodTransfer.AmountForward;
                    period.BalanceForward = periodTransfer.BalanceForward;
                    db.SaveChanges();
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    Console.Error.WriteLine(ex.Message);
                    response.MessageText = "Năm " + (periodTransfer.Year + 1) + " chưa được thêm vào phân kỳ!!";
                    response.Data        = null;
                    return(response);
                }
            }
            return(response);
        }
示例#3
0
        private ServiceResult AddPeriod(PeriodDto periodDto)
        {
            SchoolDayEntity day = Context.SchoolDays
                                  .Include(d => d.Periods)
                                  .SingleOrDefault(d => d.Id == periodDto.SchoolDayId);

            if (day == null)
            {
                return(new ServiceResult(Result.NotFound));
            }

            var periodEntity = new PeriodEntity();

            periodEntity.Number        = periodDto.Number;
            periodEntity.Cabinet       = periodDto.Cabinet;
            periodEntity.Subgroup      = periodDto.Subgroup;
            periodEntity.IsLecture     = periodDto.IsLecture;
            periodEntity.Option        = periodDto.Option;
            periodEntity.OptionDate    = periodDto.OptionDate;
            periodEntity.OptionCabinet = periodDto.OptionCabinet;
            periodEntity.IsApproved    = true;

            day.Periods.Add(periodEntity);

            Context.SaveChanges();

            return(new ServiceResult(Result.OK, periodEntity.Id));
        }
        public void Arrange()
        {
            _request = new GetPeriodsQueryRequest();

            _periodEntity1 = new PeriodEntity
            {
                Period       = 12,
                AcademicYear = 1671,
                ReferenceDataValidationDate = new DateTime(2017, 8, 31),
                CompletionDate = new DateTime(2017, 9, 5, 19, 27, 34)
            };
            _periodEntity2 = new PeriodEntity
            {
                //Id = "1718-R01",
                Period       = 1,
                AcademicYear = 1718,
                ReferenceDataValidationDate = new DateTime(2017, 10, 2),
                CompletionDate = new DateTime(2017, 10, 4, 23, 34, 10)
            };

            _periodRepository = new Mock <IPeriodRepository>();
            _periodRepository.Setup(r => r.GetPeriods())
            .Returns(Task.FromResult(new[] { _periodEntity1, _periodEntity2 }));

            _mapper = new AutoMapperMapper(AutoMapperConfigurationFactory.CreateMappingConfig());

            _handler = new Application.Period.GetPeriodsQuery.GetPeriodsQueryHandler(_periodRepository.Object, _mapper);
        }
 private void AssertPeriodForEntity(Data.CollectionPeriod period, PeriodEntity entity)
 {
     Assert.AreEqual(period.Id, $"{entity.AcademicYear}-R{entity.Period:D2}");
     Assert.AreEqual(period.CalendarMonth, PeriodExtensions.GetMonthFromPaymentEntity(entity.Period));
     Assert.AreEqual(period.CalendarYear, PeriodExtensions.GetYearFromPaymentEntity(entity.AcademicYear, entity.Period));
     Assert.AreEqual(period.AccountDataValidAt, entity.ReferenceDataValidationDate);
     Assert.AreEqual(period.CommitmentDataValidAt, entity.ReferenceDataValidationDate);
     Assert.AreEqual(period.CompletionDateTime, entity.CompletionDate);
 }
示例#6
0
 private void AssertPeriodForEntity(Data.Period period, PeriodEntity entity)
 {
     Assert.AreEqual(entity.Id, period.Id);
     Assert.AreEqual(entity.CalendarMonth, period.CalendarMonth);
     Assert.AreEqual(entity.CalendarYear, period.CalendarYear);
     Assert.AreEqual(entity.AccountDataValidAt, period.AccountDataValidAt);
     Assert.AreEqual(entity.CommitmentDataValidAt, period.CommitmentDataValidAt);
     Assert.AreEqual(entity.CompletionDateTime, period.CompletionDateTime);
 }
        public ResponseMessage SearchPeriodById(PeriodEntity periodSearch)
        {
            PeriodEntity    result   = new PeriodEntity();
            var             period   = db.Periods.Find(periodSearch.PeriodId);
            ResponseMessage response = new ResponseMessage();

            response.Data = period;
            return(response);
        }
示例#8
0
        private void UpdatePeriod(PeriodEntity period, PeriodEntity newPeriod)
        {
            period.Hash       = newPeriod.Hash;
            period.IsApproved = false;

            period.Cabinet       = newPeriod.Cabinet;
            period.Subgroup      = newPeriod.Subgroup;
            period.IsLecture     = newPeriod.IsLecture;
            period.Option        = newPeriod.Option;
            period.OptionDate    = newPeriod.OptionDate;
            period.OptionCabinet = newPeriod.OptionCabinet;
        }
        public GetHouseSelectPeriodResultEntity Post(GetHouseSelectPeriodRequestModel req)
        {
            GetHouseSelectPeriodResultEntity ret = new GetHouseSelectPeriodResultEntity()
            {
                Code    = 0,
                ErrMsg  = string.Empty,
                Periods = new List <PeriodEntity>()
            };

            try
            {
                var projectGroups = _projectGroupBLL.GetModels(i => i.ProjectID == req.ProjectId).ToList();

                foreach (var i in projectGroups)
                {
                    var shakingNumberResult = _shakingNumberResultBLL.GetModels(s => s.ProjectGroupID == i.ID).OrderBy(s => s.ShakingNumberSequance).ToList();
                    if (shakingNumberResult.Count == 0)
                    {
                        Logger.LogWarning(string.Format("项目分组{0}下没有找到摇号结果。跳过此分组。", i.ID), "GetHouseSelectPeriodController", "Post");
                        continue;
                    }
                    var shakingNumberIds = shakingNumberResult.Select(si => si.ID);
                    var beginNumber      = shakingNumberResult.Min(bn => bn.ShakingNumberSequance);
                    var endNumber        = shakingNumberResult.Max(en => en.ShakingNumberSequance);
                    var periodsTimes     = _houseSelectPeriodBLL.GetModels(hsp => shakingNumberIds.Contains(hsp.ShakingNumberResultID)).ToList();
                    var startDateTime    = periodsTimes.Min(bt => bt.StartTime);
                    var endDateTime      = periodsTimes.Max(mt => mt.EndTime);

                    var date      = startDateTime.Date;
                    var startTime = startDateTime.TimeOfDay;
                    var endTime   = endDateTime.TimeOfDay;

                    PeriodEntity periodInfo = new PeriodEntity()
                    {
                        Date      = date.ToString("yyyy-MM-dd"),
                        BeginTime = startTime,
                        EndTime   = endTime,
                        GroupId   = i.ProjectGroupName,
                        Number    = string.Format("{0}-{1}", beginNumber, endNumber)
                    };
                    ret.Periods.Add(periodInfo);
                }
            }
            catch (Exception ex)
            {
                Logger.LogException("获取项目时间段发生异常!", "GetHouseSelectPeriodController", "Post", ex);
                ret.Code    = 999;
                ret.ErrMsg  = ex.Message;
                ret.Periods = null;
            }

            return(ret);
        }
示例#10
0
        private List <PeriodEntity> MapPeriods(List <PeriodModel> periods)
        {
            var entities = new List <PeriodEntity>();

            foreach (PeriodModel period in periods)
            {
                PeriodEntity entity = MapOnePeriod(period);
                entities.Add(entity);
            }

            return(entities);
        }
示例#11
0
        public HttpResponseMessage SearchPeriodDetail(PeriodEntity searchPeriodDetail)
        {
            NV5000_FundsForBusiness FundsForBusiness = new NV5000_FundsForBusiness();
            ResponseMessage         response         = FundsForBusiness.SearchPeriodDetail(searchPeriodDetail);

            if (response.IsSuccess)
            {
                return(Request.CreateResponse(HttpStatusCode.OK, response.Data));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, response.MessageText));
            }
        }
示例#12
0
        public HttpResponseMessage UpdateTransferPeriod(PeriodEntity period)
        {
            NV5000_FundsForBusiness FundsForBusiness = new NV5000_FundsForBusiness();
            ResponseMessage         response         = FundsForBusiness.UpdateTransferPeriod(period);

            if (response.IsSuccess)
            {
                return(Request.CreateResponse(HttpStatusCode.OK, response.Data));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, response.MessageText));
            }
        }
        public ResponseMessage SearchPeriod(PeriodEntity periodSearch)
        {
            //count project each year
            var listMoneyGet = (from p in db.PeriodDetails.AsNoTracking()
                                select new
            {
                p.Amount,
                p.AmountDate,
                p.AdvanceAmount,
                p.AdvanceDate,
                p.Payment,
                p.PaymentDate,
                p.ProjectId
            }
                                );

            var list = (from p in db.Periods.AsNoTracking()
                        where p.ProjectId.Equals(periodSearch.ProjectId)
                        orderby p.Year
                        select new
            {
                PeriodId = p.PeriodId,
                Year = p.Year,
                Amount = p.Amount,
                AmountReutrn = p.AmountReutrn,
                AmountForward = p.AmountForward,
                BalanceForward = p.BalanceForward,
                ProjectId = p.ProjectId,
                Note = p.Note,
                //Kinh phí đã cấp
                MoneyGet = (from r in listMoneyGet
                            where (r.AdvanceDate.Value.Year == p.Year || r.AmountDate.Value.Year == p.Year) && r.ProjectId.Equals(p.ProjectId)
                            select(r.Amount == null ? 0 : r.Amount) + (r.AdvanceAmount == null ? 0 : r.AdvanceAmount)).Sum(),
                //Kinh phí đã thanh toán
                MoneyPaid = (from r in listMoneyGet
                             where (r.PaymentDate.Value.Year == p.Year || r.AmountDate.Value.Year == p.Year) && r.ProjectId.Equals(p.ProjectId)
                             select(r.Amount == null ? 0 : r.Amount) + (r.Payment == null ? 0 : r.Payment)).Sum(),
                //Dư ứng
                MoneyAdd = (from r in listMoneyGet
                            where (r.AdvanceDate.Value.Year == p.Year || r.PaymentDate.Value.Year == p.Year) && r.ProjectId.Equals(p.ProjectId)
                            select(r.AdvanceAmount == null ? 0 : r.AdvanceAmount) - (r.Payment == null ? 0 : r.Payment)).Sum()
            }).ToList();

            ResponseMessage respond = new ResponseMessage();

            respond.Data = list;
            return(respond);
        }
示例#14
0
        public void Arrange()
        {
            _request = new GetPeriodsQueryRequest();

            _periodEntity1 = new PeriodEntity
            {
                Id                    = "1617-R12",
                CalendarMonth         = 8,
                CalendarYear          = 2017,
                AccountDataValidAt    = new DateTime(2017, 8, 31),
                CommitmentDataValidAt = new DateTime(2017, 9, 1),
                CompletionDateTime    = new DateTime(2017, 9, 5, 19, 27, 34)
            };
            _periodEntity2 = new PeriodEntity
            {
                Id                    = "1718-R01",
                CalendarMonth         = 9,
                CalendarYear          = 2017,
                AccountDataValidAt    = new DateTime(2017, 10, 2),
                CommitmentDataValidAt = new DateTime(2017, 9, 30),
                CompletionDateTime    = new DateTime(2017, 10, 4, 23, 34, 10)
            };

            _periodRepository = new Mock <IPeriodRepository>();
            _periodRepository.Setup(r => r.GetPeriods())
            .Returns(Task.FromResult(new[] { _periodEntity1, _periodEntity2 }));

            _mapper = new Mock <IMapper>();
            _mapper.Setup(m => m.Map <Data.Period[]>(It.IsAny <PeriodEntity[]>()))
            .Returns((PeriodEntity[] source) =>
            {
                return(source.Select(e => new Data.Period
                {
                    Id = e.Id,
                    CalendarMonth = e.CalendarMonth,
                    CalendarYear = e.CalendarYear,
                    AccountDataValidAt = e.AccountDataValidAt,
                    CommitmentDataValidAt = e.CommitmentDataValidAt,
                    CompletionDateTime = e.CompletionDateTime
                }).ToArray());
            });

            _handler = new Application.Period.GetPeriodsQuery.GetPeriodsQueryHandler(_periodRepository.Object, _mapper.Object);
        }
示例#15
0
        private PeriodEntity MapOnePeriod(PeriodModel period)
        {
            string periodJson = TimetableSerializer.SerializeToJson(period);
            string periodHash = HashCoder.GetSha256Hash(periodJson);

            var entity = new PeriodEntity
            {
                Number        = period.Number,
                Cabinet       = period.Cabinet,
                Subgroup      = period.Subgroup,
                IsLecture     = period.IsLecture,
                Option        = period.Modification.Option,
                OptionDate    = period.Modification.Date,
                OptionCabinet = period.Modification.Cabinet,
                Hash          = periodHash
            };

            return(entity);
        }
        public ResponseMessage AddPeriod(PeriodEntity periodAdd)
        {
            ResponseMessage response = new ResponseMessage();

            var count = db.Periods.AsNoTracking().Where(p => p.Year == periodAdd.Year &&
                                                        p.ProjectId.Equals(periodAdd.ProjectId)).Count();

            if (count == 0)
            {
                using (var trans = db.Database.BeginTransaction())
                {
                    try
                    {
                        Period p = new Period()
                        {
                            PeriodId     = Guid.NewGuid().ToString(),
                            ProjectId    = periodAdd.ProjectId,
                            Year         = periodAdd.Year,
                            Amount       = periodAdd.Amount,
                            AmountReutrn = periodAdd.AmountReutrn
                        };

                        db.Periods.Add(p);
                        db.SaveChanges();
                        trans.Commit();
                    }
                    catch (Exception ex)
                    {
                        Console.Error.WriteLine(ex.Message);
                        response.MessageText = ResponseMessage.MSG_CANNOT_CONNECT_TO_THE_DATABASE;
                        response.Data        = null;
                        return(response);
                    }
                    return(response);
                }
            }
            else
            {
                response.MessageText = "Năm phân kỳ đã tồn tại, vui lòng sử dụng chức năng cập nhật";
                response.Data        = null;
                return(response);
            }
        }
示例#17
0
        private void UpdatePeriods(List <PeriodEntity> periods, IReadOnlyCollection <PeriodEntity> newPeriods)
        {
            periods.RemoveAll(p => newPeriods.All(n => n.Number != p.Number));

            foreach (PeriodEntity newPeriod in newPeriods)
            {
                PeriodEntity periodEntity = periods.FirstOrDefault(p => p.Number == newPeriod.Number);

                if (periodEntity == null)
                {
                    periods.Add(newPeriod);
                    continue;
                }

                if (HashCoder.IsSameHashes(periodEntity.Hash, newPeriod.Hash))
                {
                    continue;
                }

                UpdatePeriod(periodEntity, newPeriod);
            }
        }
示例#18
0
        public ServiceResult DeletePeriod(int id)
        {
            PeriodEntity period = Context.Periods
                                  .Include(p => p.SchoolDay)
                                  .ThenInclude(d => d.Subject)
                                  .FirstOrDefault(p => p.Id == id);

            if (period == null)
            {
                return(new ServiceResult(Result.NotFound));
            }

            int subjectId = period.SchoolDay.Subject.Id;
            int dayId     = period.SchoolDay.Id;

            Context.Periods.Remove(period);
            Context.SaveChanges();

            SchoolDayService.UpdateApprovedStatus(dayId);

            return(new ServiceResult(Result.OK, subjectId));
        }
示例#19
0
        public ServiceResult ApprovePeriod(int periodId)
        {
            PeriodEntity period = Context.Periods
                                  .Include(p => p.SchoolDay)
                                  .ThenInclude(d => d.Subject)
                                  .SingleOrDefault(p => p.Id == periodId);

            if (period == null)
            {
                return(new ServiceResult(Result.NotFound));
            }

            int subjectId = period.SchoolDay.Subject.Id;
            int dayId     = period.SchoolDay.Id;

            period.IsApproved = true;
            Context.SaveChanges();

            SchoolDayService.UpdateApprovedStatus(dayId);

            return(new ServiceResult(Result.OK, subjectId));
        }
示例#20
0
        private ServiceResult UpdatePeriod(PeriodDto periodDto, int periodId)
        {
            PeriodEntity periodEntity = Context.Periods
                                        .SingleOrDefault(d => d.Id == periodId);

            if (periodEntity == null)
            {
                return(new ServiceResult(Result.NotFound));
            }

            periodEntity.Number        = periodDto.Number;
            periodEntity.Cabinet       = periodDto.Cabinet;
            periodEntity.Subgroup      = periodDto.Subgroup;
            periodEntity.IsLecture     = periodDto.IsLecture;
            periodEntity.Option        = periodDto.Option;
            periodEntity.OptionDate    = periodDto.OptionDate;
            periodEntity.OptionCabinet = periodDto.OptionCabinet;
            periodEntity.IsApproved    = true;

            Context.SaveChanges();

            return(new ServiceResult(Result.OK, periodId));
        }
        public ResponseMessage SearchPeriodDetail(PeriodEntity periodDetailSearch)
        {
            var list = (from p in db.PeriodDetails.AsNoTracking()
                        where p.ProjectId.Equals(periodDetailSearch.ProjectId) && (p.AmountDate.Value.Year == periodDetailSearch.Year || p.AdvanceDate.Value.Year == periodDetailSearch.Year)
                        orderby(p.AmountDate == null?p.AdvanceDate:p.AmountDate)
                        select new
            {
                PeriodDetailId = p.PeriodDetailId,
                Type = p.Type,
                Amount = p.Amount,
                AmountDate = p.AmountDate,
                AdvanceAmount = p.AdvanceAmount,
                AdvanceDate = p.AdvanceDate,
                Payment = p.Payment,
                PaymentDate = p.PaymentDate,
                Note = p.Note,
                ProjectId = p.ProjectId
            }).ToList();

            ResponseMessage respond = new ResponseMessage();

            respond.Data = list;
            return(respond);
        }
示例#22
0
 public void Save(PeriodEntity alunoEntity)
 {
     PeriodRepository.Save(alunoEntity);
 }