示例#1
0
        /// <summary>
        /// convert specification material to view model
        /// </summary>
        /// <param name="material"></param>
        /// <returns></returns>
        public SpecificationMaterialViewModel ConvertToView(SpecificationMaterial material)
        {
            SpecificationMaterialViewModel model = new SpecificationMaterialViewModel();

            model.SpecificationMaterialId  = material.SpecificationMaterialId;
            model.SpecificationDescription = (!string.IsNullOrEmpty(material.Description)) ? material.Description : "N/A";
            model.IsActive = material.IsActive;

            return(model);
        }
示例#2
0
        /// <summary>
        /// convert specification material view model to domain
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public SpecificationMaterial ConvertToDomain(SpecificationMaterialViewModel model)
        {
            SpecificationMaterial material = new SpecificationMaterial();

            material.SpecificationMaterialId = model.SpecificationMaterialId;
            material.Description             = model.SpecificationDescription;
            material.IsActive = model.IsActive;

            return(material);
        }
示例#3
0
        /// <summary>
        /// get specification material by nullable id
        /// </summary>
        /// <param name="specificationMaterialId"></param>
        /// <returns></returns>
        public SpecificationMaterial GetSpecificationMaterial(Guid?specificationMaterialId)
        {
            var specificationMaterial = new SpecificationMaterial();

            try
            {
                specificationMaterial = _db.SpecificationMaterial.FirstOrDefault(x => x.SpecificationMaterialId == specificationMaterialId);
            }
            catch (Exception ex)
            {
                logger.ErrorFormat("Error getting specification material: {0} ", ex.ToString());
            }

            return(specificationMaterial);
        }
示例#4
0
        /// <summary>
        /// update specification matrial
        /// </summary>
        /// <param name="specificationMaterial"></param>
        /// <returns></returns>
        public OperationResult UpdateSpecificationMaterial(SpecificationMaterial specificationMaterial)
        {
            var operationResult = new OperationResult();

            var existingSpecificationMaterial = GetSpecificationMaterial(specificationMaterial.SpecificationMaterialId);

            if (existingSpecificationMaterial != null)
            {
                logger.Debug("Specification Material is being updated.");

                try
                {
                    _db.SpecificationMaterial.Attach(existingSpecificationMaterial);

                    _db.Entry(existingSpecificationMaterial).CurrentValues.SetValues(specificationMaterial);

                    _db.SaveChanges();

                    operationResult.Success = true;
                    operationResult.Message = "Success";
                }
                catch (Exception ex)
                {
                    operationResult.Success = false;
                    operationResult.Message = "Error";
                    logger.ErrorFormat("Error while updating spcification material: { 0} ", ex.ToString());
                }
            }
            else
            {
                operationResult.Success = false;
                operationResult.Message = "Unable to find selected spcification material.";
            }

            return(operationResult);
        }
示例#5
0
        /// <summary>
        /// save specification material
        /// </summary>
        /// <param name="newSpecificationMaterial"></param>
        /// <returns></returns>
        public OperationResult SaveSpecificationMaterial(SpecificationMaterial newSpecificationMaterial)
        {
            var operationResult = new OperationResult();

            try
            {
                var existingHtsNumber = _db.SpecificationMaterial.FirstOrDefault(x => x.Description.ToLower() == newSpecificationMaterial.Description.ToLower());

                if (existingHtsNumber == null)
                {
                    logger.Debug("Specification Material is being created...");

                    newSpecificationMaterial.IsActive = true;

                    _db.SpecificationMaterial.Add(newSpecificationMaterial);

                    _db.SaveChanges();

                    operationResult.Success = true;
                    operationResult.Message = "Success";
                }
                else
                {
                    operationResult.Success = false;
                    operationResult.Message = "Duplicate Entry";
                }
            }
            catch (Exception ex)
            {
                operationResult.Success = false;
                operationResult.Message = "Error";
                logger.ErrorFormat("Error saving new specification material: {0} ", ex.ToString());
            }

            return(operationResult);
        }
示例#6
0
        public JsonResult Edit(RfqViewModel model)
        {
            var operationResult     = new OperationResult();
            var existingCoatingType = _coatingTypeRepository.GetCoatingType(model.CoatingType);

            if (existingCoatingType == null)
            {
                var newCoatingType = new CoatingType();
                {
                    newCoatingType.Description = model.CoatingType;
                    newCoatingType.IsActive    = true;
                }
                operationResult     = _coatingTypeRepository.SaveCoatingType(newCoatingType);
                existingCoatingType = _coatingTypeRepository.GetCoatingType(model.CoatingType);
            }

            var existingSpecificationMaterial = _specificationMaterialRepository.GetSpecificationMaterial(model.SpecificationMaterialDescription.ToLower().Replace(" ", string.Empty));

            if (existingSpecificationMaterial == null)
            {
                var newSpecificationMaterial = new SpecificationMaterial();
                {
                    newSpecificationMaterial.Description = model.SpecificationMaterialDescription;
                    newSpecificationMaterial.IsActive    = true;
                }
                operationResult = _specificationMaterialRepository.SaveSpecificationMaterial(newSpecificationMaterial);
                existingSpecificationMaterial = _specificationMaterialRepository.GetSpecificationMaterial(model.SpecificationMaterialDescription);
            }

            var rfqToUpdate = _rfqRepository.GetRfq(model.RfqId);

            rfqToUpdate = new RfqConverter().ConvertToDomain(model);

            var projectToUpdate = _projectRepository.GetProject(model.ProjectId);

            if (model.Status != null)
            {
                if (model.IsOpen)
                {
                    projectToUpdate.IsOpen = true;
                }
                else
                {
                    projectToUpdate.IsOpen = false;
                }

                if (model.IsHold)
                {
                    projectToUpdate.IsHold             = true;
                    projectToUpdate.HoldExpirationDate = model.HoldExpirationDate;
                    projectToUpdate.HoldNotes          = model.HoldNotes;
                }
                else
                {
                    projectToUpdate.IsHold             = false;
                    projectToUpdate.HoldExpirationDate = null;
                    projectToUpdate.HoldNotes          = null;
                }

                if (model.IsCanceled)
                {
                    projectToUpdate.IsCanceled  = true;
                    projectToUpdate.CancelNotes = model.CancelNotes;
                }
                else
                {
                    projectToUpdate.IsCanceled  = false;
                    projectToUpdate.CancelNotes = null;
                }
            }

            operationResult = _rfqRepository.UpdateRfq(rfqToUpdate);

            if (operationResult.Success)
            {
                model.Success    = true;
                model.IsHold     = rfqToUpdate.IsHold;
                model.IsCanceled = rfqToUpdate.IsCanceled;

                operationResult = _projectRepository.UpdateProject(projectToUpdate);

                if (model.RfqParts != null && model.RfqParts.Count() > 0)
                {
                    foreach (var rfqPart in model.RfqParts)
                    {
                        if (rfqPart.ProjectPartId != Guid.Empty)
                        {
                            var partToUpdate = new ProjectPartConverter().ConvertToDomain(rfqPart);
                            partToUpdate.RfqId     = model.RfqId;
                            partToUpdate.ProjectId = model.ProjectId;
                            partToUpdate.MaterialSpecificationId = existingSpecificationMaterial.SpecificationMaterialId;
                            partToUpdate.MaterialId    = rfqPart.MaterialId;
                            partToUpdate.CoatingTypeId = existingCoatingType.CoatingTypeId;
                            operationResult            = _projectPartRepository.UpdateProjectPart(partToUpdate);
                        }
                        else
                        {
                            var newProjectPart = new ProjectPartConverter().ConvertToDomain(rfqPart);

                            newProjectPart.RfqId      = model.RfqId;
                            newProjectPart.ProjectId  = model.ProjectId;
                            newProjectPart.MaterialId = rfqPart.MaterialId;
                            newProjectPart.MaterialSpecificationId = existingSpecificationMaterial.SpecificationMaterialId;
                            newProjectPart.CoatingTypeId           = existingCoatingType.CoatingTypeId;

                            operationResult = _projectPartRepository.SaveProjectPart(newProjectPart);
                        }
                    }
                }

                var existingProjectParts = _projectPartRepository.GetProjectParts().Where(x => x.ProjectId == model.ProjectId).ToList();

                if (existingProjectParts != null && existingProjectParts.Count > 0)
                {
                    foreach (var existingProjectPart in existingProjectParts)
                    {
                        var projectPart = model.RfqParts.FirstOrDefault(x => x.PartNumber == existingProjectPart.Number);

                        if (projectPart == null)
                        {
                            operationResult = _projectPartRepository.DeleteProjectPart(existingProjectPart.ProjectPartId);
                        }
                    }
                }

                if (!operationResult.Success)
                {
                    model.Success = false;
                    model.Message = operationResult.Message;
                }
            }
            else
            {
                model.Success = false;
                model.Message = operationResult.Message;
            }


            return(Json(model, JsonRequestBehavior.AllowGet));
        }
示例#7
0
        public JsonResult Create(RfqViewModel model)
        {
            var operationResult = new OperationResult();

            var existingCoatingType = _coatingTypeRepository.GetCoatingType(model.CoatingType);

            if (existingCoatingType == null)
            {
                var newCoatingType = new CoatingType();
                {
                    newCoatingType.Description = model.CoatingType;
                    newCoatingType.IsActive    = true;
                }
                operationResult     = _coatingTypeRepository.SaveCoatingType(newCoatingType);
                existingCoatingType = _coatingTypeRepository.GetCoatingType(model.CoatingType);
            }

            var existingSpecificationMaterial = _specificationMaterialRepository.GetSpecificationMaterial(model.SpecificationMaterialDescription);

            if (existingSpecificationMaterial == null)
            {
                var newSpecificationMaterial = new SpecificationMaterial();
                {
                    newSpecificationMaterial.Description = model.SpecificationMaterialDescription;
                    newSpecificationMaterial.IsActive    = true;
                }
                operationResult = _specificationMaterialRepository.SaveSpecificationMaterial(newSpecificationMaterial);
                existingSpecificationMaterial = _specificationMaterialRepository.GetSpecificationMaterial(model.SpecificationMaterialDescription);
            }

            var project = _projectRepository.GetProject(model.ProjectName);

            if (project == null)
            {
                var newProject = new ProjectConverter().ConvertToCreate(model);

                operationResult = _projectRepository.SaveProject(newProject);

                model.ProjectId = operationResult.ReferenceId;
            }
            else
            {
                model.ProjectId = project.ProjectId;
            }

            var newRfq = new RfqConverter().ConvertToDomain(model);

            newRfq.ProjectId = model.ProjectId;

            operationResult = _rfqRepository.SaveRfq(newRfq);

            newRfq.RfqId = operationResult.ReferenceId;

            if (operationResult.Success && model != null)
            {
                foreach (var rfqPart in model.RfqParts)
                {
                    var newProjectPart = new ProjectPartConverter().ConvertToDomain(rfqPart);

                    newProjectPart.RfqId      = operationResult.ReferenceId;
                    newProjectPart.ProjectId  = model.ProjectId;
                    newProjectPart.MaterialId = rfqPart.MaterialId;
                    newProjectPart.MaterialSpecificationId = existingSpecificationMaterial.SpecificationMaterialId;
                    newProjectPart.CoatingTypeId           = existingCoatingType.CoatingTypeId;

                    operationResult = _projectPartRepository.SaveProjectPart(newProjectPart);
                }
            }

            operationResult.ReferenceId = newRfq.RfqId;

            return(Json(operationResult, JsonRequestBehavior.AllowGet));
        }