Beispiel #1
0
 public SaveNLSResponse SaveNLS(SaveNLSRequest request)
 {
     try
     {
         if (request.Id == 0)
         {
             var nls            = request.MapTo <NextLoadingSchedule>();
             var vesselSchedule = new VesselSchedule {
                 Id = request.VesselScheduleId
             };
             DataContext.VesselSchedules.Attach(vesselSchedule);
             nls.VesselSchedule = vesselSchedule;
             DataContext.NextLoadingSchedules.Add(nls);
         }
         else
         {
             var nls = DataContext.NextLoadingSchedules.FirstOrDefault(x => x.Id == request.Id);
             if (nls != null)
             {
                 request.MapPropertiesToInstance <NextLoadingSchedule>(nls);
                 var vesselSchedule = new VesselSchedule {
                     Id = request.VesselScheduleId
                 };
                 DataContext.VesselSchedules.Attach(vesselSchedule);
                 nls.VesselSchedule = vesselSchedule;
             }
         }
         DataContext.SaveChanges();
         var response = new SaveNLSResponse
         {
             IsSuccess = true,
             Message   = "Next Loading Schedule has been saved"
         };
         if (request.DerTransactionDate.HasValue)
         {
             var nls = DataContext.NextLoadingSchedules.Where(x => x.VesselSchedule.Id == request.VesselScheduleId && x.CreatedAt <= request.DerTransactionDate)
                       .OrderByDescending(x => x.CreatedAt).FirstOrDefault();
             if (nls != null)
             {
                 response.RemarkDate = nls.CreatedAt.ToString("dd-MM-yyyy");
                 response.Remark     = nls.Remark;
             }
         }
         return(response);
     }
     catch (InvalidOperationException e)
     {
         return(new SaveNLSResponse
         {
             IsSuccess = false,
             Message = e.Message
         });
     }
 }
Beispiel #2
0
        public BaseResponse SaveSchedules(int[] ids, DateTime date)
        {
            try
            {
                var derLoadingSchedule = DataContext.DerLoadingSchedules.Include(x => x.VesselSchedules).FirstOrDefault(x => x.Period == date);
                if (derLoadingSchedule != null)
                {
                    foreach (var schedule in derLoadingSchedule.VesselSchedules.ToList())
                    {
                        derLoadingSchedule.VesselSchedules.Remove(schedule);
                    }
                }
                else
                {
                    derLoadingSchedule = new DerLoadingSchedule {
                        Period = date
                    };
                    DataContext.DerLoadingSchedules.Add(derLoadingSchedule);
                }

                foreach (var id in ids)
                {
                    var schedule = DataContext.VesselSchedules.Local.FirstOrDefault(x => x.Id == id);
                    if (schedule == null)
                    {
                        schedule = new VesselSchedule {
                            Id = id
                        };
                        DataContext.VesselSchedules.Attach(schedule);
                    }
                    derLoadingSchedule.VesselSchedules.Add(schedule);
                }


                DataContext.SaveChanges();
                return(new BaseResponse
                {
                    IsSuccess = true,
                    Message = "You have been successfully save choosen schedules"
                });
            }
            catch (Exception e)
            {
                return(new BaseResponse {
                    Message = e.Message
                });
            }
        }
Beispiel #3
0
 public SaveNLSResponse SaveNLS(SaveNLSRequest request)
 {
     try
     {
         if (request.Id == 0)
         {
             var nls            = request.MapTo <NextLoadingSchedule>();
             var vesselSchedule = new VesselSchedule {
                 Id = request.VesselScheduleId
             };
             DataContext.VesselSchedules.Attach(vesselSchedule);
             nls.VesselSchedule = vesselSchedule;
             DataContext.NextLoadingSchedules.Add(nls);
         }
         else
         {
             var nls = DataContext.NextLoadingSchedules.FirstOrDefault(x => x.Id == request.Id);
             if (nls != null)
             {
                 request.MapPropertiesToInstance <NextLoadingSchedule>(nls);
                 var vesselSchedule = new VesselSchedule {
                     Id = request.VesselScheduleId
                 };
                 DataContext.VesselSchedules.Attach(vesselSchedule);
                 nls.VesselSchedule = vesselSchedule;
             }
         }
         DataContext.SaveChanges();
         return(new SaveNLSResponse
         {
             IsSuccess = true,
             Message = "Next Loading Schedule has been saved"
         });
     }
     catch (InvalidOperationException e)
     {
         return(new SaveNLSResponse
         {
             IsSuccess = false,
             Message = e.Message
         });
     }
 }
 public DeleteVesselScheduleResponse Delete(DeleteVesselScheduleRequest request)
 {
     try
     {
         var vesselSchedule = new VesselSchedule {
             Id = request.Id
         };
         DataContext.VesselSchedules.Attach(vesselSchedule);
         DataContext.VesselSchedules.Remove(vesselSchedule);
         DataContext.SaveChanges();
         return(new DeleteVesselScheduleResponse
         {
             IsSuccess = true,
             Message = "You have been successfully delete this item"
         });
     }
     catch (DbUpdateException e) {
         if (e.InnerException.InnerException.Message.Contains("dbo.NextLoadingSchedules"))
         {
             return(new DeleteVesselScheduleResponse
             {
                 IsSuccess = false,
                 Message = "The vessel schedule is being used by next loading schedule"
             });
         }
         return(new DeleteVesselScheduleResponse
         {
             IsSuccess = false,
             Message = "An error occured while trying to delete this item"
         });
     }
     catch (InvalidOperationException e)
     {
         return(new DeleteVesselScheduleResponse
         {
             IsSuccess = false,
             Message = "An error occured while trying to delete this item"
         });
     }
 }
        public async Task <ActionResult <VesselSchedule> > Post(VesselSchedule vesselSchedule)
        {
            string eMail = string.Empty;

            using (Utility util = new Utility())
            {
                eMail = util.GetEmailclaim(User.Identity as ClaimsIdentity);
            }

            if (vesselSchedule.Id > 0)
            {
                vesselSchedule.UpdatedBy = eMail;
                vesselSchedule.Details.ForEach(i => i.UpdatedBy = eMail);
                await _repository.UpdateAsync <VesselSchedule>(vesselSchedule);
            }
            else
            {
                vesselSchedule.CreatedBy = eMail;
                vesselSchedule.Details.ForEach(i => i.CreatedBy = eMail);
                await _repository.AddAsync <VesselSchedule>(vesselSchedule);
            }
            return(await GetVesselSchedules(vesselSchedule.Id));
        }
Beispiel #6
0
        public IEnumerable <VesselRoute> BuildVesselRoutesEntitites(VesselSchedule schedule)
        {
            List <VesselRoute> finalList = new List <VesselRoute>();

            finalList.Add(new VesselRoute()
            {
                DestinationPortId = schedule.DestinationPortId,
                OriginPortId      = schedule.OriginPortId,
                StartDate         = schedule.EstDepDate,
                OriginPort        = schedule.OriginPort,
                DestinationPort   = schedule.DestinationPort,
                EndDate           = schedule.EstArrDestDate,
                Schedule          = schedule,
            });


            if (schedule.Details != null)
            {
                //source -origin and trasits as Destination X partner x Package
                var isDeleiveryAvailableList = schedule.Details.FindAll(x => x.IsDeliveryAvailable == true).ToList <ScheduleDetail>();
                foreach (ScheduleDetail detail in isDeleiveryAvailableList)
                {
                    VesselRoute route = new VesselRoute()
                    {
                        StartDate         = schedule.EstDepDate,
                        EndDate           = detail.ExpArrival,
                        DestinationPortId = detail.TransitPortId,
                        OriginPortId      = schedule.OriginPortId,

                        OriginPort      = schedule.OriginPort,
                        DestinationPort = detail.TransitPort,
                        Schedule        = schedule,
                    };
                    finalList.Add(route);
                }

                var isLoadingAvailable = schedule.Details.FindAll(x => x.IsLoadingAvailable == true).ToList <ScheduleDetail>();

                foreach (ScheduleDetail detail in isLoadingAvailable)
                {
                    VesselRoute route = new VesselRoute()
                    {
                        StartDate = detail.ExpDeparture,
                        EndDate   = schedule.EstArrDestDate,


                        OriginPort      = detail.TransitPort,
                        DestinationPort = schedule.DestinationPort,

                        DestinationPortId = schedule.DestinationPortId,
                        OriginPortId      = detail.TransitPortId,

                        Schedule = schedule,
                    };
                    finalList.Add(route);
                }

                foreach (ScheduleDetail source in isLoadingAvailable)//this becomes source
                {
                    foreach (ScheduleDetail destination in isDeleiveryAvailableList)
                    {
                        if (source.Id != destination.Id && source.ExpArrival < destination.ExpArrival)
                        {
                            VesselRoute route = new VesselRoute()
                            {
                                StartDate = source.ExpDeparture,
                                EndDate   = destination.ExpArrival,

                                OriginPort      = source.TransitPort,
                                DestinationPort = destination.TransitPort,


                                DestinationPortId = destination.TransitPortId,
                                OriginPortId      = source.TransitPortId,
                                Schedule          = schedule,
                            };
                            finalList.Add(route);
                        }
                    }
                }
            }
            return(finalList);
        }
Beispiel #7
0
        /// <summary>
        /// For Admin
        /// </summary>
        /// <param name="schedule"></param>
        /// <param name="currencyCode"></param>
        /// <returns></returns>
        public List <VesselCharge> BuildVesselChargeEntitites(VesselSchedule schedule, string currencyCode)
        {
            List <VesselCharge> finalList = new List <VesselCharge>();

            int currencyId = 1;
            var currency   = _repository.FindSingle <Currency>(x => x.CurrencyCode == currencyCode);

            currencyId = currency == null ? 1 : currency.Id;

            int chargedAtId = 1;
            var chargedAt   = _repository.FindSingle <ChargedAt>(x => x.Name == "ORIGIN");

            chargedAtId = chargedAt == null ? 1 : chargedAt.Id;


            var pckList     = _repository.ListAllAsyncWhere <Package>(x => x.IsActive == true).Result;
            var partnerList = _repository.ListAllAsyncWhere <Partner>(x => x.IsActive == true && x.PartnerName != "ADMIN").Result;

            //Source and DEstination x Partner X Package
            foreach (Package pck in pckList)
            {
                foreach (Partner prtner in partnerList)
                {
                    VesselCharge charge = new VesselCharge()
                    {
                        ChargedAtId       = chargedAtId,
                        ChargeAmount      = 200,
                        ChargeDetail      = "STD",
                        PackageId         = pck.Id,
                        CurrencyId        = currencyId,
                        StartDate         = schedule.EstDepDate,
                        EndDate           = schedule.EstArrDestDate,
                        CreatedBy         = "senthil",
                        CreatedAt         = new DateTime(),
                        DestinationPortId = schedule.DestinationPortId,
                        OriginPortId      = schedule.OriginPortId,
                        PartnerId         = prtner.Id,
                        IsActive          = false,
                        VesselScheduleId  = schedule.Id,
                        ChargeType        = "chargeType",
                        UpdatedAt         = new DateTime(),
                        UpdatedBy         = "senthil",
                        VesselSchedule    = schedule,
                        Package           = pck,
                        Partner           = prtner,
                        Currency          = currency,
                        DestinationPort   = schedule.DestinationPort,

                        OriginPort = schedule.OriginPort,
                        ChargedAt  = chargedAt,
                    };
                    finalList.Add(charge);
                }
            }

            if (schedule.Details != null)
            {
                //source -origin and trasits as Destination X partner x Package
                var isDeleiveryAvailableList = schedule.Details.FindAll(x => x.IsDeliveryAvailable == true).ToList <ScheduleDetail>();
                foreach (ScheduleDetail detail in isDeleiveryAvailableList)
                {
                    foreach (Package pck in pckList)
                    {
                        foreach (Partner prtner in partnerList)
                        {
                            VesselCharge charge = new VesselCharge()
                            {
                                ChargedAtId       = chargedAtId,
                                ChargeAmount      = 200,
                                ChargeDetail      = "STD",
                                PackageId         = pck.Id,
                                CurrencyId        = 1,
                                StartDate         = schedule.EstDepDate,
                                EndDate           = detail.ExpArrival,
                                CreatedBy         = "senthil",
                                CreatedAt         = new DateTime(),
                                DestinationPortId = detail.TransitPortId,
                                OriginPortId      = schedule.OriginPortId,
                                PartnerId         = prtner.Id,
                                IsActive          = false,
                                VesselScheduleId  = schedule.Id,
                                ChargeType        = "chargeType",
                                UpdatedAt         = new DateTime(),
                                UpdatedBy         = "senthil",
                                VesselSchedule    = schedule,
                                Package           = pck,
                                Partner           = prtner,
                                Currency          = currency,
                                DestinationPort   = detail.TransitPort,

                                OriginPort = schedule.OriginPort,
                                ChargedAt  = chargedAt
                            };
                            finalList.Add(charge);
                        }
                    }
                }


                //source from transit and Destination x partner x package
                var isLoadingAvailable = schedule.Details.FindAll(x => x.IsLoadingAvailable == true).ToList <ScheduleDetail>();

                foreach (ScheduleDetail detail in isLoadingAvailable)
                {
                    foreach (Package pck in pckList)
                    {
                        foreach (Partner prtner in partnerList)
                        {
                            VesselCharge charge = new VesselCharge()
                            {
                                ChargedAtId       = chargedAtId,
                                ChargeAmount      = 200,
                                ChargeDetail      = "STD",
                                PackageId         = pck.Id,
                                CurrencyId        = 1,
                                CreatedBy         = "senthil",
                                StartDate         = detail.ExpDeparture,
                                EndDate           = schedule.EstArrDestDate,
                                CreatedAt         = new DateTime(),
                                DestinationPortId = schedule.DestinationPortId,
                                OriginPortId      = detail.TransitPortId,
                                PartnerId         = prtner.Id,
                                IsActive          = false,
                                VesselScheduleId  = schedule.Id,
                                ChargeType        = "chargeType",
                                UpdatedAt         = new DateTime(),
                                UpdatedBy         = "senthil",
                                VesselSchedule    = schedule,
                                Package           = pck,
                                Partner           = prtner,
                                Currency          = currency,
                                DestinationPort   = schedule.DestinationPort,

                                OriginPort = detail.TransitPort,
                                ChargedAt  = chargedAt,
                            };
                            finalList.Add(charge);
                        }
                    }
                }


                //transit 1 as source and transit 2...n as Destinaition x partner x package

                foreach (ScheduleDetail source in isLoadingAvailable)//this becomes source
                {
                    foreach (ScheduleDetail destination in isDeleiveryAvailableList)
                    {
                        if (source.Id != destination.Id && source.ExpArrival < destination.ExpArrival)
                        {
                            foreach (Package pck in pckList)
                            {
                                foreach (Partner prtner in partnerList)
                                {
                                    VesselCharge charge = new VesselCharge()
                                    {
                                        ChargedAtId       = chargedAtId,
                                        ChargeAmount      = 200,
                                        ChargeDetail      = "STD",
                                        PackageId         = pck.Id,
                                        CurrencyId        = 1,
                                        StartDate         = source.ExpDeparture,
                                        EndDate           = destination.ExpArrival,
                                        CreatedBy         = "senthil",
                                        CreatedAt         = new DateTime(),
                                        DestinationPortId = destination.TransitPortId,
                                        OriginPortId      = source.TransitPortId,
                                        PartnerId         = prtner.Id,
                                        IsActive          = false,
                                        VesselScheduleId  = schedule.Id,
                                        ChargeType        = "chargeType",
                                        UpdatedAt         = new DateTime(),
                                        UpdatedBy         = "senthil",

                                        VesselSchedule  = schedule,
                                        Package         = pck,
                                        Partner         = prtner,
                                        Currency        = currency,
                                        DestinationPort = destination.TransitPort, // _repository.FindSingle<Port>(x => x.Id == destination.TransitPortId),

                                        OriginPort = source.TransitPort,           // _repository.FindSingle<Port>(x => x.Id == source.TransitPortId),
                                        ChargedAt  = chargedAt,
                                    };
                                    finalList.Add(charge);
                                }
                            }
                        }
                    }
                }
            }
            return(finalList);
        }