public async Task <IActionResult> PutByNumber(int key, [FromBody] UnitsMeasure uUnitsMeasure)
        {
            if (uUnitsMeasure != null)
            {
                uUnitsMeasure.ModifyDate = DateTime.Now;
                uUnitsMeasure.Modifyer   = uUnitsMeasure.Modifyer ?? "Someone";

                return(new JsonResult(await this.repository.UpdateAsync(uUnitsMeasure, key), this.DefaultJsonSettings));
            }
            return(NotFound(new { Error = "UnitsMeasure not found." }));
        }
        public async Task <IActionResult> Post([FromBody] UnitsMeasure nUnitsMeasure)
        {
            if (nUnitsMeasure != null)
            {
                nUnitsMeasure.CreateDate = DateTime.Now;
                nUnitsMeasure.Creator    = nUnitsMeasure.Creator ?? "Someone";

                return(new JsonResult(await this.repository.AddAsync(nUnitsMeasure), this.DefaultJsonSettings));
            }

            return(NotFound(new { Error = "UnitsMeasure not found." }));
        }
Example #3
0
        public async Task <IActionResult> PutByNumber(int key, [FromBody] JobCardMaster uJobCardMaster)
        {
            var Message = "ProjectMaster not found. ";

            try
            {
                if (uJobCardMaster != null)
                {
                    // add hour to DateTime to set Asia/Bangkok
                    uJobCardMaster = helpers.AddHourMethod(uJobCardMaster);

                    uJobCardMaster.ModifyDate = DateTime.Now;
                    uJobCardMaster.Modifyer   = uJobCardMaster.Modifyer ?? "Someone";

                    if (uJobCardMaster.JobCardMasterStatus != JobCardMasterStatus.Complete)
                    {
                        uJobCardMaster.JobCardMasterStatus = uJobCardMaster.JobCardDetails.Any(x => x.JobCardDetailStatus == JobCardDetailStatus.Wait)
                            ? JobCardMasterStatus.Wait : JobCardMasterStatus.InProcess;
                    }

                    if (uJobCardMaster.JobCardDetails != null)
                    {
                        foreach (var uDetail in uJobCardMaster.JobCardDetails)
                        {
                            if (uDetail.JobCardDetailId > 0)
                            {
                                uDetail.ModifyDate = uJobCardMaster.ModifyDate;
                                uDetail.Modifyer   = uJobCardMaster.Modifyer;
                            }
                            else
                            {
                                uDetail.CreateDate          = uJobCardMaster.ModifyDate;
                                uDetail.Creator             = uJobCardMaster.Modifyer;
                                uDetail.JobCardDetailStatus = JobCardDetailStatus.Wait;
                            }

                            // Insert UnitMeasure
                            if (uDetail.UnitMeasureId < 1 && uDetail.UnitsMeasure != null)
                            {
                                var nUnitMeasure = new UnitsMeasure()
                                {
                                    UnitMeasureId   = uDetail.UnitsMeasure.UnitMeasureId,
                                    CreateDate      = uDetail.UnitsMeasure.CreateDate,
                                    Creator         = uDetail.UnitsMeasure.Creator,
                                    UnitMeasureName = uDetail.UnitsMeasure.UnitMeasureName,
                                    ModifyDate      = uDetail.UnitsMeasure.ModifyDate,
                                    Modifyer        = uDetail.UnitsMeasure.Modifyer
                                };

                                if (nUnitMeasure != null)
                                {
                                    nUnitMeasure.CreateDate = uJobCardMaster.ModifyDate;
                                    nUnitMeasure.Creator    = uJobCardMaster.Modifyer;

                                    nUnitMeasure = await this.repositoryUom.AddAsync(nUnitMeasure);

                                    uDetail.UnitMeasureId = nUnitMeasure.UnitMeasureId;
                                }
                            }

                            if (uDetail.CuttingPlanId < 1 && uDetail.CuttingPlan != null)
                            {
                                var nCuttingPlan = new CuttingPlan()
                                {
                                    CreateDate          = uDetail.CuttingPlan.CreateDate,
                                    Creator             = uDetail.CuttingPlan.Creator,
                                    CuttingPlanId       = uDetail.CuttingPlan.CuttingPlanId,
                                    CuttingPlanNo       = uDetail.CuttingPlan.CuttingPlanNo,
                                    Description         = uDetail.CuttingPlan.Description,
                                    MaterialGrade       = uDetail.CuttingPlan.MaterialGrade,
                                    MaterialSize        = uDetail.CuttingPlan.MaterialSize,
                                    ProjectCodeDetailId = uDetail.CuttingPlan.ProjectCodeDetailId,
                                    Quantity            = uDetail.CuttingPlan.Quantity,
                                    TypeCuttingPlan     = uDetail.CuttingPlan.TypeCuttingPlan
                                };

                                if (nCuttingPlan != null)
                                {
                                    nCuttingPlan.CreateDate = uJobCardMaster.ModifyDate;
                                    nCuttingPlan.Creator    = uJobCardMaster.Modifyer;

                                    if (string.IsNullOrEmpty(nCuttingPlan.MaterialSize))
                                    {
                                        nCuttingPlan.MaterialSize = uDetail.Material;
                                    }

                                    if (nCuttingPlan?.Quantity == null || nCuttingPlan?.Quantity < 1)
                                    {
                                        nCuttingPlan.Quantity = uDetail.Quality;
                                    }

                                    nCuttingPlan = await this.repositoryCut.AddAsync(nCuttingPlan);

                                    uDetail.CuttingPlanId = nCuttingPlan.CuttingPlanId;
                                }
                            }

                            uDetail.CuttingPlan  = null;
                            uDetail.UnitsMeasure = null;
                        }
                    }

                    // update Master not update Detail it need to update Detail directly
                    var updateComplate = await this.repository.UpdateAsync(uJobCardMaster, key);

                    if (updateComplate != null)
                    {
                        // filter
                        Expression <Func <JobCardDetail, bool> > condition = m => m.JobCardMasterId == key;
                        var dbDetails = this.repositoryDetail.FindAll(condition);

                        //Remove Jo if edit remove it
                        foreach (var dbDetail in dbDetails)
                        {
                            if (!uJobCardMaster.JobCardDetails.Any(x => x.JobCardDetailId == dbDetail.JobCardDetailId))
                            {
                                await this.repositoryDetail.DeleteAsync(dbDetail.JobCardDetailId);
                            }
                        }
                        //Update JobCardDetail or New JobCardDetail
                        foreach (var uDetail in uJobCardMaster.JobCardDetails)
                        {
                            if (uDetail.JobCardDetailId > 0)
                            {
                                await this.repositoryDetail.UpdateAsync(uDetail, uDetail.JobCardDetailId);
                            }
                            else
                            {
                                if (uDetail.JobCardDetailId < 1)
                                {
                                    uDetail.JobCardMasterId = uJobCardMaster.JobCardMasterId;
                                }

                                await this.repositoryDetail.AddAsync(uDetail);
                            }
                        }
                    }
                    return(new JsonResult(updateComplate, this.DefaultJsonSettings));

                    //return new JsonResult(await this.repository.UpdateAsync(uJobCardMaster, key), this.DefaultJsonSettings);
                }
            }
            catch (Exception ex)
            {
                Message = $"Has error {ex.ToString()}";
            }
            return(NotFound(new { Error = Message }));
        }