Пример #1
0
        public void Update(ProjectModel entity)
        {
            var result = new ErrorCodeLib.Models.ResultModel();

            _context.Entry(entity).State = EntityState.Modified;
            _context.Entry(entity).Property(a => a.created).IsModified = false;
        }
Пример #2
0
        public ResultModel FindAll(Expression <Func <project_partnerModel, bool> > expression)
        {
            var result = new ErrorCodeLib.Models.ResultModel();
            var data   = _context.project_partner
                         .Include(a => a.partner_)
                         .Include(a => a.project_)
                         .Where(expression)
                         .AsNoTracking()
                         //.Select(c => new
                         //{
                         //    id = c.project_id,
                         //    c.project_.name,
                         //    c.project_.budget,
                         //    c.project_.date_start,
                         //    c.project_.date_end,
                         //    c.project_.internal_HR,
                         //    c.project_.outsourcing_HR,
                         //    c.project_.remarks,
                         //    c.partner_id,
                         //    c.project_.status

                         //})
                         .GroupBy(a => a.id)
                         //.OrderBy(a=>a.id)
                         //.OrderBy(a=>a.partner_id)
                         .ToList();

            result = ErrorCode.SUCCESS(data, "", "cht");

            return(result);
        }
Пример #3
0
        public ResultModel FindAll(Expression <Func <ExpenditureModel, bool> > expression)
        {
            var result = new ErrorCodeLib.Models.ResultModel();

            var query = _context.expenditure
                        .Include(a => a.project_)
                        .Include(a => a.partner_)
                        .Where(expression)
                        .AsNoTracking()
                        .Select(a => new
            {
                a.id,
                a.project_id,
                a.partner_id,
                a.partner_.organization_id,
                a.item_id,
                a.due_date,
                a.payment_date,
                overdue = new TimeSpan(Convert.ToDateTime(a.payment_date).Ticks - Convert.ToDateTime(a.due_date).Ticks).Days < 0 ? 0 : new TimeSpan(Convert.ToDateTime(a.payment_date).Ticks - Convert.ToDateTime(a.due_date).Ticks).Days,
                a.amount_payable,
                a.amount_paid,
                a.status
            })
                        .ToList();

            var output = new
            {
                data  = query,
                total = query.Count()
            };

            result = ErrorCode.SUCCESS(output, "", "cht");
            return(result);
        }
Пример #4
0
        public async Task <ErrorCodeLib.Models.ResultModel> Create([FromBody] ProjectModel model)
        {
            var result = new ErrorCodeLib.Models.ResultModel();

            model.created = DateTime.Now;
            //檢查partner
            var exist_partner = new PartnerModel();

            if (!string.IsNullOrEmpty(model.partner_id))
            {
                string[] partner_id_arr = model.partner_id.Split(",");
                foreach (var i in partner_id_arr)
                {
                    try
                    {
                        exist_partner = _repo_partner.FindById(Convert.ToInt32(i));
                    }
                    catch (Exception e)
                    {
                        result = ErrorCode.PARAMETER_INVALID(null, "partner_id", "cht");
                        return(result);
                    }
                    if (exist_partner == null)
                    {
                        result = ErrorCode.DB_ERROR_NOT_FOUND(null, "partner_id", "cht");
                        return(result);
                    }
                }
            }
            result = _repo_project.Create(model);

            return(result);
        }
Пример #5
0
        public IQueryable <ProjectModel> ListProtoType(Expression <Func <ProjectModel, bool> > expression)
        {
            var output = new object();
            var result = new ErrorCodeLib.Models.ResultModel();
            var query  = _context.project
                         .Where(expression)
                         .AsNoTracking()
                         .AsQueryable();

            return(query);
        }
Пример #6
0
        public async Task <ErrorCodeLib.Models.ResultModel> Get([FromQuery] ProjectModelForQuery model)
        {
            var result = new ErrorCodeLib.Models.ResultModel();

            if (model.partner_id != null)
            {
                var predicate = PredicateBuilder.True <project_partnerModel>();
                predicate = predicate.And(a => a.partner_id == model.partner_id);
                if (model.partner_id != null)
                {
                    predicate = predicate.And(a => a.partner_id == model.partner_id);
                }
                if (model.id != null)
                {
                    predicate = predicate.And(a => a.project_id == model.id);
                }
                if (model.date_start != null)
                {
                    predicate = predicate.And(a => a.project_.date_start >= model.date_start);
                }
                if (model.date_end != null)
                {
                    predicate = predicate.And(a => a.project_.date_end <= model.date_end);
                }
                var query_result = _repo_project_partner.FindAll(predicate);


                if (query_result.Status != 200)
                {
                    return(query_result);
                }

                result = query_result;
            }
            else
            {
                var predicate = PredicateBuilder.True <ProjectModel>();
                if (model.id != null)
                {
                    predicate = predicate.And(a => a.id == model.id);
                }
                if (model.date_start != null)
                {
                    predicate = predicate.And(a => a.date_start >= model.date_start);
                }
                if (model.date_end != null)
                {
                    predicate = predicate.And(a => a.date_end <= model.date_end);
                }
                var query_result = _repo_project.FindAll(predicate);

                if (query_result.Status != 200)
                {
                    return(query_result);
                }
                result = query_result;
            }



            return(result);
        }
Пример #7
0
        public async Task <ErrorCodeLib.Models.ResultModel> Put([FromBody] ProjectModel model)
        {
            var result = new ErrorCodeLib.Models.ResultModel();
            //檢查project
            var existData = _repo_project.FindById(model.id);

            if (existData == null)
            {
                result = ErrorCode.DB_ERROR_NOT_FOUND(null, "id", "cht");
                return(result);
            }


            //檢查partner
            var exist_partner = new PartnerModel();

            if (!string.IsNullOrEmpty(model.partner_id))
            {
                string[] partner_id_arr = model.partner_id.Split(",");
                foreach (var i in partner_id_arr)
                {
                    try
                    {
                        exist_partner = _repo_partner.FindById(Convert.ToInt32(i));
                    }
                    catch (Exception e)
                    {
                        result = ErrorCode.PARAMETER_INVALID(null, "partner_id", "cht");
                        return(result);
                    }
                    if (exist_partner == null)
                    {
                        result = ErrorCode.DB_ERROR_NOT_FOUND(null, "partner_id", "cht");
                        return(result);
                    }
                }
            }
            model.updated = DateTime.Now;
            _repo_project.Update(model);

            if (!string.IsNullOrEmpty(model.partner_id))
            {
                var exist_project_partner_list = _repo_project_partner.ListProtoType(a => a.project_id == model.id);

                string[] partner_id_arr = model.partner_id.Split(",");
                ////刪除不在partner_id array裡的
                foreach (var k in exist_project_partner_list)
                {
                    if (!Array.Exists(partner_id_arr, a => a == k.partner_id.ToString()))
                    {
                        _repo_project_partner.Delete(k);
                    }
                }
                //增加exist_project_partner_list缺少的
                foreach (var i in partner_id_arr)
                {
                    bool isExist = false;
                    foreach (var j in exist_project_partner_list)
                    {
                        if (j.partner_id.ToString() == i)
                        {
                            isExist = true;
                        }
                    }
                    if (!isExist)
                    {
                        //新增合作廠商id (註)
                        var project_partner_data = new project_partnerModel();
                        project_partner_data.created    = DateTime.Now;
                        project_partner_data.project_id = model.id;
                        project_partner_data.partner_id = Convert.ToInt32(i);
                        _repo_project_partner.Create(project_partner_data);
                    }
                }
            }

            //最後存檔
            var except = _unitOfWork.Save();

            if (except != null)
            {
                result = ErrorCode.CUSTOM_ERROR(except.Message, "DB ERROR", 500, "cht");
                return(result);
            }

            result = ErrorCode.SUCCESS(null, "修改成功", "cht");
            return(result);
        }