예제 #1
0
        public async Task <ResponseData> SyncOfflineData(ReportHeader rptHdr, ReportAllDetailsVm reportAllDetails)
        {
            try
            {
                _logger.LogInformation($"{nameof(SyncOfflineData)} - Called");

                var existHeaderData = _rsaContext.ReportHeaders.AsNoTracking().Where(w => w.ReportGuid == rptHdr.ReportGuid).FirstOrDefault();

                rptHdr.CreatedOn                   = DateTime.UtcNow;
                rptHdr.CreatedBy                   = rptHdr.CreatedBy;
                rptHdr.IsSafetyFirstComplete       = false;
                rptHdr.IsCustomerEquipmentComplete = false;
                rptHdr.IsVibrationAnalysisComplete = false;
                rptHdr.IsObservationComplete       = false;
                rptHdr.IsRecommendationComplete    = false;
                rptHdr.ApprovedBy                  = null;
                rptHdr.DocTriggerFrom              = "DRAFT";

                if (existHeaderData == null)
                {
                    _rsaContext.Add(rptHdr);
                }
                else
                {
                    rptHdr.Id = existHeaderData.Id;
                    _rsaContext.Update(rptHdr);
                }

                #region SafetyFirstCheck
                if (reportAllDetails.SafetyFirstCheck != null)
                {
                    var eixstsSafety = _rsaContext.SafetyFirstChecks.AsNoTracking().FirstOrDefault(a => a.ReportGuid == rptHdr.ReportGuid);
                    if (eixstsSafety != null)
                    {
                        _rsaContext.SafetyFirstChecks.Remove(eixstsSafety);
                        _rsaContext.SafetyFirstCheckDetails.RemoveRange(_rsaContext.SafetyFirstCheckDetails.AsNoTracking().Where(a => a.ReportGuid == rptHdr.ReportGuid));
                    }

                    reportAllDetails.SafetyFirstCheck.ReportGuid = rptHdr.ReportGuid;
                    reportAllDetails.SafetyFirstCheck.Id         = 0;
                    foreach (var item in reportAllDetails.SafetyFirstCheck.SafetyFirstCheckDetails)
                    {
                        item.Id         = 0;
                        item.ReportGuid = rptHdr.ReportGuid;
                    }
                    _rsaContext.Add(reportAllDetails.SafetyFirstCheck);
                }
                #endregion

                #region CustomerEquipmentActivity
                if (reportAllDetails.CustomerEquipmentActivity != null)
                {
                    var custEquipAct = _rsaContext.CustomerEquipmentActivities.AsNoTracking().FirstOrDefault(a => a.ReportGuid == rptHdr.ReportGuid);
                    if (custEquipAct != null)
                    {
                        _rsaContext.CustomerEquipmentActivities.Remove(custEquipAct);
                    }

                    reportAllDetails.CustomerEquipmentActivity.ReportGuid = rptHdr.ReportGuid;
                    reportAllDetails.CustomerEquipmentActivity.Id         = 0;
                    _rsaContext.Add(reportAllDetails.CustomerEquipmentActivity);
                }
                #endregion


                #region VibrationAnalysisHeader
                if (reportAllDetails.VibrationAnalysisHeader != null)
                {
                    var existVibAna = _rsaContext.VibrationAnalysisHeaders.AsNoTracking().FirstOrDefault(a => a.ReportGuid == rptHdr.ReportGuid);

                    if (existVibAna != null)
                    {
                        _rsaContext.VibrationAnalysisHeaders.Remove(existVibAna);
                        var exisVibAnaDetails = _rsaContext.VibrationAnalysis.AsNoTracking().Where(a => a.ReportGuid == rptHdr.ReportGuid);
                        if (exisVibAnaDetails.Any())
                        {
                            _rsaContext.VibrationAnalysis.RemoveRange(exisVibAnaDetails);
                        }
                    }
                    reportAllDetails.VibrationAnalysisHeader.ReportGuid = rptHdr.ReportGuid;
                    reportAllDetails.VibrationAnalysisHeader.Id         = 0;
                    foreach (var item in reportAllDetails.VibrationAnalysisHeader.VibrationAnalysis)
                    {
                        item.Id         = 0;
                        item.ReportGuid = rptHdr.ReportGuid;
                    }
                    _rsaContext.Add(reportAllDetails.VibrationAnalysisHeader);
                }
                #endregion

                #region Observations
                if (reportAllDetails.Observations != null)
                {
                    var existObs = _rsaContext.Observations.AsNoTracking().Where(w => w.ReportGuid == rptHdr.ReportGuid);
                    if (existObs.Any())
                    {
                        _rsaContext.Observations.RemoveRange(existObs);
                    }
                    foreach (var obs in reportAllDetails.Observations)
                    {
                        obs.ReportGuid = rptHdr.ReportGuid;
                        obs.Id         = 0;
                        _rsaContext.Add(obs);
                    }
                }
                #endregion

                #region Recommendations
                if (reportAllDetails.Recommendations != null)
                {
                    var existRecomm = _rsaContext.Recommendations.AsNoTracking().Where(w => w.ReportGuid == rptHdr.ReportGuid);
                    if (existRecomm.Any())
                    {
                        _rsaContext.Recommendations.RemoveRange(existRecomm);
                    }
                    foreach (var recomm in reportAllDetails.Recommendations)
                    {
                        recomm.ReportGuid = rptHdr.ReportGuid;
                        recomm.Id         = 0;
                        _rsaContext.Add(recomm);
                    }
                }
                #endregion

                #region SpareParts
                if (reportAllDetails.SpareParts != null)
                {
                    var existSparts = _rsaContext.SpareParts.AsNoTracking().Where(w => w.ReportGuid == rptHdr.ReportGuid);
                    if (existSparts.Any())
                    {
                        _rsaContext.SpareParts.RemoveRange(existSparts);
                    }

                    foreach (var sp in reportAllDetails.SpareParts)
                    {
                        sp.ReportGuid = rptHdr.ReportGuid;
                        sp.Id         = 0;
                        _rsaContext.Add(sp);
                    }
                }
                #endregion

                if (reportAllDetails.Misc != null)
                {
                    var exisMisc = _rsaContext.Miscs.AsNoTracking().FirstOrDefault(w => w.ReportGuid == rptHdr.ReportGuid);
                    if (exisMisc != null)
                    {
                        _rsaContext.Miscs.Remove(exisMisc);
                    }
                    reportAllDetails.Misc.Id           = 0;
                    reportAllDetails.Misc.ReportGuid   = rptHdr.ReportGuid;
                    reportAllDetails.Misc.CustomerDate = DateTime.Now;
                    reportAllDetails.Misc.FirmDate     = DateTime.Now;
                    _rsaContext.Add(reportAllDetails.Misc);
                }

                if (await _rsaContext.SaveChangesAsync() > 0)
                {
                    return(new ResponseData()
                    {
                        status = ResponseStatus.success, data = rptHdr.ReportGuid, message = "Report Synchronized Successfully."
                    });
                }

                return(new ResponseData()
                {
                    status = ResponseStatus.warning, data = rptHdr.ReportGuid, message = "Report Synchronization Failed."
                });
            }
            catch (Exception ex)
            {
                _logger.LogError($"{nameof(SyncOfflineData)} - Error", ex);
                return(new ResponseData()
                {
                    status = ResponseStatus.error, data = rptHdr.ReportGuid, message = "Report Synchronization Failed."
                });
            }
        }
예제 #2
0
        /// <summary>
        /// It can newly create or modify the existing details
        /// </summary>
        /// <param name="reportHeaderGuid"></param>
        /// <param name=""></param>
        /// <returns></returns>
        public async Task <ResponseData> SaveReportOtherDetails(Guid reportHeaderGuid, ReportAllDetailsVm reportAllDetails)
        {
            try
            {
                _logger.LogInformation($"{nameof(SaveReportOtherDetails)} - Called");

                if (reportHeaderGuid != reportAllDetails.ReportGuid || reportAllDetails.SafetyFirstCheck.Id == 0)
                {
                    return new ResponseData()
                           {
                               status  = ResponseStatus.warning,
                               message = "Call is not genuine"
                           }
                }
                ;

                if (reportAllDetails.SafetyFirstCheck.SafetyFirstCheckDetails == null ||
                    reportAllDetails.SafetyFirstCheck.SafetyFirstCheckDetails.Count != 10)
                {
                    return new ResponseData()
                           {
                               status  = ResponseStatus.warning,
                               message = "Data rows are not in expected range in Safety First Check"
                           }
                }
                ;

                if (reportAllDetails.SafetyFirstCheck.SafetyFirstCheckDetails.Where(w => w.Id == 0).Any())
                {
                    return new ResponseData()
                           {
                               status  = ResponseStatus.warning,
                               message = "No new entry is allowed in edit mode of Safe First Check"
                           }
                }
                ;


                if (reportAllDetails.CustomerEquipmentActivity.Id == 0 &&
                    _rsaContext.CustomerEquipmentActivities.Any(a => a.ReportGuid == reportHeaderGuid))
                {
                    return(new ResponseData()
                    {
                        status = ResponseStatus.warning,
                        message = $"Customer Equipment Activity is already exists for Report Header Id {reportHeaderGuid}"
                    });
                }

                if (reportAllDetails.VibrationAnalysisHeader.Id == 0 &&
                    _rsaContext.VibrationAnalysisHeaders.Any(a => a.ReportGuid == reportHeaderGuid))
                {
                    return(new ResponseData()
                    {
                        status = ResponseStatus.warning,
                        message = $"Vibration Analysis is already exists for Report Header Id {reportHeaderGuid}"
                    });
                }

                var reportHeader = _rsaContext.ReportHeaders.FirstOrDefault(f => f.ReportGuid == reportHeaderGuid);
                reportHeader.UpdatedOn = DateTime.UtcNow;
                reportHeader.IsCustomerEquipmentComplete = true;
                reportHeader.IsVibrationAnalysisComplete = true;
                reportHeader.IsObservationComplete       = true;
                reportHeader.IsRecommendationComplete    = true;

                _rsaContext.Update(reportHeader);
                _rsaContext.Update(reportAllDetails.SafetyFirstCheck);

                if (reportAllDetails.CustomerEquipmentActivity.Id == 0)
                {
                    reportAllDetails.CustomerEquipmentActivity.ReportGuid = reportHeaderGuid;
                    _rsaContext.Add(reportAllDetails.CustomerEquipmentActivity);
                }
                else
                {
                    reportAllDetails.CustomerEquipmentActivity.ReportGuid = reportHeaderGuid;
                    _rsaContext.Update(reportAllDetails.CustomerEquipmentActivity);
                }

                if (reportAllDetails.VibrationAnalysisHeader != null)
                {
                    foreach (var item in reportAllDetails.VibrationAnalysisHeader.VibrationAnalysis)
                    {
                        item.ReportGuid = reportHeaderGuid;
                    }

                    if (reportAllDetails.VibrationAnalysisHeader.Id == 0)
                    {
                        reportAllDetails.VibrationAnalysisHeader.ReportGuid = reportHeaderGuid;
                        _rsaContext.Add(reportAllDetails.VibrationAnalysisHeader);
                    }
                    else
                    {
                        reportAllDetails.VibrationAnalysisHeader.ReportGuid = reportHeaderGuid;
                        _rsaContext.Update(reportAllDetails.VibrationAnalysisHeader);
                    }
                }

                foreach (var obs in reportAllDetails.Observations)
                {
                    obs.ReportGuid = reportHeaderGuid;
                    if (obs.Id == 0)
                    {
                        _rsaContext.Add(obs);
                    }
                    else
                    {
                        _rsaContext.Update(obs);
                    }
                }
                foreach (var recomm in reportAllDetails.Recommendations)
                {
                    recomm.ReportGuid = reportHeaderGuid;
                    if (recomm.Id == 0)
                    {
                        _rsaContext.Add(recomm);
                    }
                    else
                    {
                        _rsaContext.Update(recomm);
                    }
                }
                foreach (var sp in reportAllDetails.SpareParts)
                {
                    sp.ReportGuid = reportHeaderGuid;
                    if (sp.Id == 0)
                    {
                        _rsaContext.Add(sp);
                    }
                    else
                    {
                        _rsaContext.Update(sp);
                    }
                }


                if (reportAllDetails.Misc.Id == 0)
                {
                    reportAllDetails.Misc.ReportGuid = reportHeaderGuid;
                    //reportAllDetails.Misc.CustomerDate = DateTime.Now;
                    //reportAllDetails.Misc.FirmDate = DateTime.Now;
                    _rsaContext.Add(reportAllDetails.Misc);
                }
                else
                {
                    reportAllDetails.Misc.ReportGuid = reportHeaderGuid;
                    _rsaContext.Update(reportAllDetails.Misc);
                }

                await _rsaContext.SaveChangesAsync();


                return(new ResponseData()
                {
                    status = ResponseStatus.success, data = reportHeaderGuid, message = "Report Saved Successfully."
                });
            }
            catch (Exception ex)
            {
                _logger.LogError($"{nameof(SaveReportOtherDetails)} - Error", ex);
                return(new ResponseData()
                {
                    status = ResponseStatus.error, data = reportHeaderGuid, message = "Report Save Failed."
                });
            }
        }
예제 #3
0
        public async Task <ResponseData> GetReportDetails(Guid reportHeaderGuid)
        {
            ReportAllDetailsVm reportAllDetailsVm = new ReportAllDetailsVm();

            reportAllDetailsVm.ReportGuid       = reportHeaderGuid;
            reportAllDetailsVm.SafetyFirstCheck = _rsaContext.SafetyFirstChecks.AsNoTracking()
                                                  .Include(a => a.SafetyFirstCheckDetails)
                                                  .Where(w => w.ReportGuid == reportHeaderGuid).FirstOrDefault();

            if (reportAllDetailsVm.SafetyFirstCheck == null)
            {
                return new ResponseData()
                       {
                           status  = ResponseStatus.error,
                           message = "Error while getting data."
                       }
            }
            ;

            reportAllDetailsVm.CustomerEquipmentActivity = _rsaContext.CustomerEquipmentActivities.AsNoTracking()
                                                           .Where(w => w.ReportGuid == reportHeaderGuid).FirstOrDefault();

            if (reportAllDetailsVm.CustomerEquipmentActivity == null)
            {
                reportAllDetailsVm.CustomerEquipmentActivity = new CustomerEquipmentActivity()
                {
                    ReportGuid          = reportHeaderGuid,
                    PreviousServiceDate = DateTime.Now,
                    CurrentServiceDate  = DateTime.Now,
                    ReportDate          = DateTime.Now
                };
            }
            reportAllDetailsVm.VibrationAnalysisHeader = _rsaContext.VibrationAnalysisHeaders.AsNoTracking()
                                                         .Include(a => a.VibrationAnalysis)
                                                         .Where(w => w.ReportGuid == reportHeaderGuid)
                                                         .FirstOrDefault();

            if (reportAllDetailsVm.VibrationAnalysisHeader == null)
            {
                reportAllDetailsVm.VibrationAnalysisHeader = new VibrationAnalysisHeader()
                {
                    ReportGuid = reportHeaderGuid
                };
            }
            else
            {
                var orderParams = new VibrationAnalysis[parameterUnits.Count];
                int i           = 0;
                foreach (var item in parameterUnits.OrderBy(o => o.Key))
                {
                    orderParams[i] = reportAllDetailsVm.VibrationAnalysisHeader.VibrationAnalysis.First(w => item.Value.Contains($"{w.Parameter}~{w.Units}", StringComparison.OrdinalIgnoreCase));
                    i++;
                }
                reportAllDetailsVm.VibrationAnalysisHeader.VibrationAnalysis = orderParams;
            }
            List <Observation> obs = _rsaContext.Observations.AsNoTracking().Where(w => w.ReportGuid == reportHeaderGuid && w.Status == 'A').ToList();

            if (obs == null)
            {
                obs = new List <Observation>();
            }
            reportAllDetailsVm.Observations = obs;

            List <Recommendation> recomms = _rsaContext.Recommendations.AsNoTracking().Where(w => w.ReportGuid == reportHeaderGuid && w.Status == 'A').ToList();

            if (recomms == null)
            {
                recomms = new List <Recommendation>();
            }
            reportAllDetailsVm.Recommendations = recomms;

            List <SparePart> spareParts = _rsaContext.SpareParts.AsNoTracking().Where(w => w.ReportGuid == reportHeaderGuid && w.Status == 'A').ToList();

            if (spareParts == null)
            {
                spareParts = new List <SparePart>();
            }
            reportAllDetailsVm.SpareParts = spareParts;

            reportAllDetailsVm.Misc = _rsaContext.Miscs.AsNoTracking().FirstOrDefault(f => f.ReportGuid == reportHeaderGuid) ?? new Misc()
            {
                FirmDate = DateTime.Now, CustomerDate = DateTime.Now
            };

            var signFirmImage = _rsaContext.ImageHouses.AsNoTracking().FirstOrDefault(f => f.ReportGuid == reportHeaderGuid && f.ImageLabel == StringConstants.FirmSignature);

            if (signFirmImage != null)
            {
                reportAllDetailsVm.FirmSignatureImageId = signFirmImage.ImageFileGuid;
            }

            var signCustImage = _rsaContext.ImageHouses.AsNoTracking().FirstOrDefault(f => f.ReportGuid == reportHeaderGuid && f.ImageLabel == StringConstants.CustomerSignature);

            if (signCustImage != null)
            {
                reportAllDetailsVm.CustomerSignatureImageId = signCustImage.ImageFileGuid;
            }

            var sfc_signFirmImage = _rsaContext.ImageHouses.AsNoTracking().FirstOrDefault(f => f.ReportGuid == reportHeaderGuid && f.ImageLabel == StringConstants.SfcFirmSignature);

            if (sfc_signFirmImage != null)
            {
                reportAllDetailsVm.SfcFirmSignatureImageId = sfc_signFirmImage.ImageFileGuid;
            }

            var sfc_signCustImage = _rsaContext.ImageHouses.AsNoTracking().FirstOrDefault(f => f.ReportGuid == reportHeaderGuid && f.ImageLabel == StringConstants.SfcCustomerSignature);

            if (sfc_signCustImage != null)
            {
                reportAllDetailsVm.SfcCustomerSignatureImageId = sfc_signCustImage.ImageFileGuid;
            }

            return(new ResponseData()
            {
                status = ResponseStatus.success,
                data = reportAllDetailsVm
            });
        }
예제 #4
0
        public async Task <ActionResult> SaveReportAllOtherDetails([FromQuery] Guid reportHeaderGuid, [FromBody] ReportAllDetailsVm reportAllDetails)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                var res = await _reportActivities.SaveReportOtherDetails(reportHeaderGuid, reportAllDetails);

                return(Ok(res));
            }
            catch (Exception ex)
            {
                _logger.LogError($"{nameof(SaveReportAllOtherDetails)} - Error", ex);
                return(StatusCode(StatusCodes.Status500InternalServerError,
                                  new { data = "Error occurred. Please contact admin" }));
            }
        }