コード例 #1
0
 public override void SetModel(dynamic entity)
 {
     try
     {
         ConstructionAtlas data = (ConstructionAtlas)entity;
         BindingFromModel(data, this);
     }
     catch (Exception ex)
     {
         setErrortoModel(this, ex);
     }
 }
コード例 #2
0
ファイル: ProjectsController.cs プロジェクト: ediux/tokiku2
        public override ExecuteResultEntity <Projects> Update(Projects fromModel, bool isLastRecord = true)
        {
            try
            {
                var repo = RepositoryHelper.GetProjectsRepository();
                database = repo.UnitOfWork;

                var original = (from q in repo.All()
                                where q.Id == fromModel.Id
                                select q).Single();

                if (original != null)
                {
                    CheckAndUpdateValue(fromModel, original);

                    var toDel    = original.ProjectContract.Select(s => s.Id).Except(fromModel.ProjectContract.Select(s => s.Id)).ToList();
                    var toAdd    = fromModel.ProjectContract.Select(s => s.Id).Except(original.ProjectContract.Select(s => s.Id)).ToList();
                    var samerows = original.ProjectContract.Select(s => s.Id).Intersect(fromModel.ProjectContract.Select(s => s.Id)).ToList();

                    Stack <ProjectContract> RemoveStack = new Stack <ProjectContract>();
                    Stack <ProjectContract> AddStack    = new Stack <ProjectContract>();

                    foreach (var delitem in toDel)
                    {
                        RemoveStack.Push(original.ProjectContract.Where(w => w.Id == delitem).Single());
                    }

                    foreach (var additem in toAdd)
                    {
                        AddStack.Push(fromModel.ProjectContract.Where(w => w.Id == additem).Single());
                    }

                    while (RemoveStack.Count > 0)
                    {
                        original.ProjectContract.Remove(RemoveStack.Pop());
                    }

                    while (AddStack.Count > 0)
                    {
                        original.ProjectContract.Add(AddStack.Pop());
                    }

                    foreach (var sameitem in samerows)
                    {
                        ProjectContract Source = fromModel.ProjectContract.Where(w => w.Id == sameitem).Single();
                        ProjectContract Target = original.ProjectContract.Where(w => w.Id == sameitem).Single();
                        CheckAndUpdateValue(Source, Target);
                    }

                    var toDelBI = original.SupplierTranscationItem.Select(s => new { s.ProjectId, s.ManufacturersBussinessItemsId })
                                  .Except(fromModel.SupplierTranscationItem.Select(s => new { s.ProjectId, s.ManufacturersBussinessItemsId })).ToList();
                    var toAddBI    = fromModel.SupplierTranscationItem.Select(s => new { s.ProjectId, s.ManufacturersBussinessItemsId }).Except(original.SupplierTranscationItem.Select(s => new { s.ProjectId, s.ManufacturersBussinessItemsId })).ToList();
                    var samerowsBI = original.SupplierTranscationItem.Select(s => new { s.ProjectId, s.ManufacturersBussinessItemsId }).Intersect(fromModel.SupplierTranscationItem.Select(s => new { s.ProjectId, s.ManufacturersBussinessItemsId })).ToList();

                    Stack <SupplierTranscationItem> RemoveStackBI = new Stack <SupplierTranscationItem>();
                    Stack <SupplierTranscationItem> AddStackBI    = new Stack <SupplierTranscationItem>();

                    foreach (var delitem in toDelBI)
                    {
                        RemoveStackBI.Push(original.SupplierTranscationItem.Where(w => w.ProjectId == delitem.ProjectId && w.ManufacturersBussinessItemsId == delitem.ManufacturersBussinessItemsId).Single());
                    }

                    foreach (var additem in toAddBI)
                    {
                        AddStackBI.Push(fromModel.SupplierTranscationItem.Where(w => w.ProjectId == additem.ProjectId && w.ManufacturersBussinessItemsId == additem.ManufacturersBussinessItemsId).Single());
                    }

                    while (RemoveStackBI.Count > 0)
                    {
                        original.SupplierTranscationItem.Remove(RemoveStackBI.Pop());
                    }

                    while (AddStackBI.Count > 0)
                    {
                        original.SupplierTranscationItem.Add(AddStackBI.Pop());
                    }

                    foreach (var sameitem in samerowsBI)
                    {
                        SupplierTranscationItem Source = fromModel.SupplierTranscationItem.Where(w => w.ProjectId == sameitem.ProjectId && w.ManufacturersBussinessItemsId == sameitem.ManufacturersBussinessItemsId).Single();
                        SupplierTranscationItem Target = original.SupplierTranscationItem.Where(w => w.ProjectId == sameitem.ProjectId && w.ManufacturersBussinessItemsId == sameitem.ManufacturersBussinessItemsId).Single();
                        CheckAndUpdateValue(Source, Target);
                    }

                    #region 施工圖集
                    var toDel3    = original.ConstructionAtlas.Select(s => s.Id).Except(fromModel.ConstructionAtlas.Select(s => s.Id)).ToList();
                    var toAdd3    = fromModel.ConstructionAtlas.Select(s => s.Id).Except(original.ConstructionAtlas.Select(s => s.Id)).ToList();
                    var samerows3 = original.ConstructionAtlas.Select(s => s.Id).Intersect(fromModel.ConstructionAtlas.Select(s => s.Id)).ToList();

                    Stack <ConstructionAtlas> RemoveStack3 = new Stack <ConstructionAtlas>();
                    Stack <ConstructionAtlas> AddStack3    = new Stack <ConstructionAtlas>();

                    foreach (var delitem in toDel3)
                    {
                        RemoveStack3.Push(original.ConstructionAtlas.Where(w => w.Id == delitem).Single());
                    }

                    foreach (var additem in toAdd3)
                    {
                        AddStack3.Push(fromModel.ConstructionAtlas.Where(w => w.Id == additem).Single());
                    }

                    while (RemoveStack3.Count > 0)
                    {
                        original.ConstructionAtlas.Remove(RemoveStack3.Pop());
                    }

                    while (AddStack3.Count > 0)
                    {
                        original.ConstructionAtlas.Add(AddStack3.Pop());
                    }

                    foreach (var sameitem in samerows)
                    {
                        try
                        {
                            ConstructionAtlas Source = fromModel.ConstructionAtlas.Where(w => w.Id == sameitem).Single();
                            ConstructionAtlas Target = original.ConstructionAtlas.Where(w => w.Id == sameitem).Single();
                            CheckAndUpdateValue(Source, Target);
                        }
                        catch
                        {
                            continue;
                        }
                    }
                    #endregion

                    repo.UnitOfWork.Commit();
                }

                fromModel = repo.Get(original.Id);

                return(ExecuteResultEntity <Projects> .CreateResultEntity(fromModel));
            }
            catch (Exception ex)
            {
                return(ExecuteResultEntity <Projects> .CreateErrorResultEntity(ex));
            }
        }
コード例 #3
0
ファイル: ProjectsViewModel.cs プロジェクト: ediux/tokiku2
        public override void SaveModel()
        {
            Projects data = new Projects();

            if (Status.IsNewInstance)
            {
                data.Id = Guid.NewGuid();
            }

            CopyToModel(data, this);

            if (ProjectContract != null)
            {
                foreach (ProjectContractViewModel model in ProjectContract)
                {
                    if (model != null)
                    {
                        ProjectContract pcdata = new ProjectContract();

                        CopyToModel(pcdata, model);
                        pcdata.ProjectId = data.Id;
                        data.ProjectContract.Add(pcdata);
                    }
                }
            }

            if (ConstructionAtlas.Any())
            {
                foreach (ConstructionAtlasViewModel model in ConstructionAtlas)
                {
                    ConstructionAtlas entity = new ConstructionAtlas();
                    CopyToModel(entity, model);
                    entity.ProjectContractId = data.Id;
                    data.ConstructionAtlas.Add(entity);
                }
            }

            if (Suppliers != null)
            {
                if (Suppliers.Any())
                {
                    foreach (var supplier in Suppliers)
                    {
                        SupplierTranscationItem supplierdata = new SupplierTranscationItem();
                        supplierdata.PlaceofReceipt = supplier.PlaceofReceipt;
                        supplierdata.ManufacturersBussinessItemsId = supplier.Id;
                        supplierdata.ProjectId = data.Id;

                        data.SupplierTranscationItem.Add(supplierdata);
                    }
                }
            }
            var result = _projectcontroller.CreateOrUpdate(data);

            if (result.HasError)
            {
                Errors = result.Errors;
            }

            Query(data.Id);
        }