public ResponseMessage AddComponentsDisaptch(DispatchAddComponents payload)
        {
            ResponseMessage responseMesasge = new ResponseMessage();

            responseMesasge = _compRepo.AddComponentsDisaptch(payload);
            return(responseMesasge);
        }
Exemplo n.º 2
0
 public IActionResult AddComponentsForDispatch(DispatchAddComponents payload)
 {
     try
     {
         var response = _siteDispatchService.AddComponentsDisaptch(payload);
         return(Ok(new { message = response.Message, code = 201 }));
     }
     catch (ValueNotFoundException e)
     {
         Util.LogError(e);
         return(StatusCode(StatusCodes.Status422UnprocessableEntity, new ErrorClass()
         {
             code = StatusCodes.Status422UnprocessableEntity.ToString(), message = e.Message
         }));
     }
     catch (Exception e)
     {
         Util.LogError(e);
         return(StatusCode(StatusCodes.Status500InternalServerError, new ErrorClass()
         {
             code = StatusCodes.Status500InternalServerError.ToString(), message = "Something went wrong"
         }));
     }
 }
        public ResponseMessage AddComponentsDisaptch(DispatchAddComponents request)
        {
            ResponseMessage response = new ResponseMessage();

            response.Message = "Components added succusfully";
            // if (request?.ProjectStructureDetail == null)
            //  throw new ValueNotFoundException ("ProjectStructureDetail Request cannot be empty.");
            ProjectStructure            projectStructure = _context.ProjectStructure.Where(x => x.Id == _context.DispReqStructure.Where(x => x.Id == request.DispStructureId).FirstOrDefault().ProjStructId&& x.IsDelete == false).FirstOrDefault();
            List <dispatchedStrucCount> result           = new List <dispatchedStrucCount>();
            int count     = _context.Component.Where(s => s.ProjStructId == projectStructure.Id).Count();
            int Quantity  = request.Components.Where(x => x.CompId == null).Count();
            int excedCout = count + Quantity;

            // int totalcount =_context.ProjectStructure.Single(s =>s.Id==projectStructure.Id).ComponentsCount??0;
            if (projectStructure.ComponentsCount < excedCout)
            {
                throw new ValueNotFoundException("Dispatch Components should match the required quantity.");
            }

            try {
                //	using (var transaction = _context.Database.BeginTransaction ())
                {
                    try {
                        var isUpdate           = false;
                        var projectStructureID = 0;
                        projectStructure = _context.ProjectStructure.Where(x => x.Id == _context.DispReqStructure.Where(x => x.Id == request.DispStructureId).FirstOrDefault().ProjStructId&& x.IsDelete == false).FirstOrDefault();
                        if (projectStructure == null)
                        {
                            throw new ValueNotFoundException("Project Structure not yet assigned");
                        }
                        projectStructureID = projectStructure.Id;
                        if (request.Components?.Count > 0)
                        {
                            List <Component>        componentls     = new List <Component> ();
                            List <ComponentHistory> componentHistls = new List <ComponentHistory> ();
                            foreach (var comp in request.Components)
                            {
                                ComponentType compTypeDB = _context.ComponentType.Where(x => x.Name == comp.CompTypeName && x.IsDelete == false).FirstOrDefault();
                                if (compTypeDB == null)
                                {
                                    throw new ValueNotFoundException("Component Type Name doesn't exist");
                                }
                            }
                            foreach (var comp in request.Components)
                            {
                                var           compdb     = _context.Component.Where(x => x.CompId == comp.CompId && x.IsDelete == false).FirstOrDefault();
                                ComponentType compTypeDB = _context.ComponentType.Where(x => x.Name == comp.CompTypeName && x.IsDelete == false).FirstOrDefault();

                                if (compTypeDB == null)
                                {
                                    throw new ValueNotFoundException("Component Type Name doesn't exist");
                                }
                                if (compdb != null)
                                {
                                    var dispCompDB = _context.DispStructureComp.Where(x => x.DispCompId == compdb.Id && x.DispStructureId == request.DispStructureId).FirstOrDefault();
                                    if (dispCompDB != null)
                                    {
                                        compdb = ConstructComponent(projectStructureID, comp, compdb, compTypeDB);
                                        //     DispStructureComp dsc = new DispStructureComp();
                                        //     dsc.DispCompId  =  compdb.Id;
                                        //     dsc.DispStructureId = request.DispStructureId;

                                        //    // _context.Add(compdb);
                                        //     _context.Add(dsc);
                                        _context.SaveChanges();
                                    }
                                    else
                                    {
                                        throw new ValueNotFoundException("Dispatch Component ID doesnt exists");
                                    }
                                }
                                else
                                {
                                    Component component = null;
                                    comp.CompStatus = "O";
                                    component       = ConstructComponent(projectStructureID, comp, component, compTypeDB);
                                    _context.Component.Add(component);
                                    _context.SaveChanges();
                                    DispStructureComp dsc = new DispStructureComp();
                                    dsc.DispCompId      = component.Id;
                                    dsc.DispStructureId = request.DispStructureId;
                                    _context.DispStructureComp.Add(dsc);
                                    _context.SaveChanges();
                                }
                            }
                            //  projectStructure.ComponentsCount = request.Components.Count ();
                            // _context.SaveChanges ();
                        }

                        return(response);
                    } catch (Exception ex) {
                        //	transaction.Rollback ();
                        throw ex;
                    }
                }
            } catch (Exception ex) {
                throw ex;
            }
        }