public ValueDataResponse <WorkOrder> InsertWorkOrder(UpsertWorkOrder workorders)
        {
            ValueDataResponse <WorkOrder> response = new ValueDataResponse <WorkOrder>();

            try
            {
                var orderExists = _appContext.WorkOrders.Where(x => x.Reference1 == workorders.Reference1).FirstOrDefault();
                if (orderExists == null)
                {
                    WorkOrder Wro    = _mapper.Map <WorkOrder>(workorders);
                    var       result = _appContext.WorkOrders.Add(Wro);
                    _appContext.SaveChanges();
                    if (workorders.WorkOrderItems != null)
                    {
                        foreach (var it in workorders.WorkOrderItems)
                        {
                            _appContext.WorkOrderItemXrefs.Add(new WorkOrderItemXref
                            {
                                ItemId      = it.ItemId,
                                WorkOrderId = Wro.Id,
                                Quantity    = it.Quantity,
                            });
                        }
                        _appContext.SaveChanges();
                    }


                    if (Wro != null)
                    {
                        response.Result    = Wro;
                        response.IsSuccess = true;


                        response.AffectedRecords = 1;
                        response.EndUserMessage  = "Work Order Added Successfully";
                    }
                    else
                    {
                        response.IsSuccess       = true;
                        response.AffectedRecords = 0;
                        response.EndUserMessage  = "Work Order Added Failed";
                    }
                }
                else
                {
                    response.IsSuccess       = false;
                    response.AffectedRecords = 0;
                    response.EndUserMessage  = "Work Order Reference is Already Exists";
                }
            }
            catch (Exception ex)
            {
                response.IsSuccess       = false;
                response.AffectedRecords = 0;
                response.EndUserMessage  = ex.InnerException == null ? ex.Message : ex.InnerException.Message;
                response.Exception       = ex;
            }
            return(response);
        }
 public ValueDataResponse <WorkOrder> Update(UpsertWorkOrder workorders)
 {
     return(_unitOfWork.WorkOrders.UpdateWorkOrder(workorders));
 }
 public ValueDataResponse <WorkOrder> Insert(UpsertWorkOrder workorders)
 {
     return(_unitOfWork.WorkOrders.InsertWorkOrder(workorders));
 }
        public ValueDataResponse <WorkOrder> UpdateWorkOrder(UpsertWorkOrder workorders)
        {
            ValueDataResponse <WorkOrder> response = new ValueDataResponse <WorkOrder>();

            try
            {
                var orderExists = _appContext.WorkOrders.Where(x => x.Id != workorders.Id && x.Reference1 == workorders.Reference1).FirstOrDefault();
                if (orderExists == null)
                {
                    WorkOrder Wro               = _mapper.Map <WorkOrder>(workorders);
                    var       result            = _appContext.WorkOrders.Where(x => x.Id == workorders.Id).FirstOrDefault();
                    var       workOrderItemList = _appContext.WorkOrderItemXrefs.Where(x => x.WorkOrderId == workorders.Id).ToList();
                    _appContext.WorkOrderItemXrefs.RemoveRange(workOrderItemList);
                    _appContext.SaveChanges();

                    foreach (var it in workorders.WorkOrderItems)
                    {
                        _appContext.WorkOrderItemXrefs.Add(new WorkOrderItemXref
                        {
                            ItemId      = it.ItemId,
                            WorkOrderId = Wro.Id,
                            Quantity    = it.Quantity,
                        });
                    }

                    if (result != null)
                    {
                        result.AssetId          = workorders.AssetId;
                        result.OrderTypeId      = workorders.OrderTypeId;
                        result.PMProcedureId    = workorders.PMProcedureId;
                        result.StartDate        = workorders.StartDate;
                        result.EndDate          = workorders.EndDate;
                        result.WorkTypeId       = workorders.WorkTypeId;
                        result.StatusTypeId     = workorders.StatusTypeId;
                        result.WorkTechnicianId = workorders.WorkTechnicianId;
                        result.WorkStatusId     = workorders.WorkStatusId;
                        result.WorkFaultId      = workorders.WorkFaultId;
                        result.StoreId          = workorders.StoreId;
                        result.Reference1       = workorders.Reference1;
                        result.ExtraDetails     = workorders.Extradetails;
                        result.Issue            = workorders.Issue;
                        result.Resolution       = workorders.Resolution;
                        result.CreatedBy        = workorders.CreatedBy;
                        result.CreatedDate      = workorders.CreatedDate;
                        result.UpdatedBy        = workorders.UpdatedBy;
                        result.UpdatedDate      = workorders.UpdatedDate;
                        result.IsActive         = workorders.IsActive;
                    }
                    _appContext.SaveChanges();

                    if (Wro != null)
                    {
                        response.Result          = Wro;
                        response.IsSuccess       = true;
                        response.AffectedRecords = 1;
                        response.EndUserMessage  = "Work Order Update Successfully";
                    }
                    else
                    {
                        response.IsSuccess       = true;
                        response.AffectedRecords = 0;
                        response.EndUserMessage  = "Work Order Updation Failed";
                    }
                }
                else
                {
                    response.IsSuccess       = false;
                    response.AffectedRecords = 0;
                    response.EndUserMessage  = "Work Order Reference is Already Exists";
                }
            }
            catch (Exception ex)
            {
                response.IsSuccess       = false;
                response.AffectedRecords = 0;
                response.EndUserMessage  = ex.InnerException == null ? ex.Message : ex.InnerException.Message;
                response.Exception       = ex;
            }
            return(response);
        }