Example #1
0
        public void SaveLogWS(log_ws dbItem)
        {
            if (dbItem.id == Guid.Empty)
            {
                dbItem.id = Guid.NewGuid();
                context.log_ws.Add(dbItem);
            }

            context.SaveChanges();
        }
Example #2
0
        public HttpResponseMessage CheckAvailability([FromBody] CheckAvailabilityParam param)
        {
            //kamus
            List <CarModel>           result    = new List <CarModel>();
            DisplayFormatHelper       dfh       = new DisplayFormatHelper();
            List <car>                ownerCars = new List <car>();
            List <rent>               rents     = new List <rent>();
            Dictionary <string, Guid> cityMap;
            Guid                 idOwner = new Guid();
            List <Guid>          rentedCars;
            string               message         = null;
            HttpResponseMessage  responseMessage = new HttpResponseMessage();
            HttpStatusCode       httpStatus      = HttpStatusCode.OK;
            bool                 isDataValid     = true;
            log_ws               logWs           = new log_ws();
            JavaScriptSerializer serializer      = new JavaScriptSerializer();

            Business.Infrastructure.FilterInfo filters = new Business.Infrastructure.FilterInfo {
                Filters = new List <Business.Infrastructure.FilterInfo>(), Logic = "and"
            };

            DateTime       dtStart, dtFinish;
            DateTimeOffset dtoStart, dtoFinish;

            //algoritma
            //hardcode data
            cityMap = new Dictionary <string, Guid>();
            cityMap.Add("bali", new Guid("9e9af49f-742a-40a2-9338-228e56060442"));
            cityMap.Add("surabaya", new Guid("7a683eb8-656d-4b4c-be71-157dd2328a64"));

            //mengecek validitas data
            if (param.StartRent == null || param.FinishRent == null)
            {
                isDataValid = false;
                message     = HttpContext.GetGlobalResourceObject("WebServiceMessage", "DateNullAlert").ToString();
                httpStatus  = HttpStatusCode.BadRequest;
            }

            //algoritma
            if (isDataValid)
            {
                dtStart  = new DateTime(param.StartRent.Value.Year, param.StartRent.Value.Month, param.StartRent.Value.Day, 0, 0, 0);
                dtStart  = DateTime.SpecifyKind(dtStart, DateTimeKind.Local);
                dtoStart = dtStart;

                dtFinish  = new DateTime(param.FinishRent.Value.Year, param.FinishRent.Value.Month, param.FinishRent.Value.Day, 23, 59, 59);
                dtFinish  = DateTime.SpecifyKind(dtFinish, DateTimeKind.Local);
                dtoFinish = dtFinish;

                param.City = param.City.ToLower();
                if (cityMap.ContainsKey(param.City))
                {
                    idOwner = cityMap[param.City];

                    //mengambil rent dari start s/d finish untuk owner tertentu
                    rents = RepoRent.FindAll(idOwner, dtStart, dtFinish);

                    rents.RemoveAll(m => m.finish_rent == dtoStart);
                    rents.RemoveAll(m => m.start_rent == dtoFinish);

                    //mengambil car sesuai parameter                                                                                                                                                                                                                      //mengambil car sesuai parameter
                    filters.Filters.Add(new Business.Infrastructure.FilterInfo {
                        Field = "id_owner", Operator = "eq", Value = idOwner.ToString()
                    });
                    if (param.CarBrandName != null)
                    {
                        filters.Filters.Add(new Business.Infrastructure.FilterInfo {
                            Field = "car_model.car_brand.name", Operator = "eq", Value = param.CarBrandName
                        });
                    }
                    if (param.CarModelName != null)
                    {
                        filters.Filters.Add(new Business.Infrastructure.FilterInfo {
                            Field = "car_model.name", Operator = "eq", Value = param.CarModelName
                        });
                    }
                    if (param.Capacity != null)
                    {
                        filters.Filters.Add(new Business.Infrastructure.FilterInfo {
                            Field = "car_model.capacity", Operator = "gte", Value = param.Capacity.Value.ToString()
                        });
                    }
                    ownerCars = RepoCar.FindAll(null, null, null, filters);

                    //menghapus car yang sudah ada di rent
                    rentedCars = rents.Select(m => m.id_car_model).ToList();

                    //menghapus mobil yang sudah di-booking
                    car carByModel;
                    foreach (Guid idCarModel in rentedCars)
                    {
                        carByModel = ownerCars.Where(m => m.id_car_model == idCarModel).FirstOrDefault();
                        if (carByModel != null)
                        {
                            ownerCars.Remove(carByModel);
                        }
                    }

                    result = CarModel.Map(ownerCars); //mapping dbItems ke PresentationStub
                }
            }

            //menyimpan data ke log_ws
            //menggunakan ILogRepository.SaveLogWS

            logWs.created_time  = DateTimeOffset.Now;
            logWs.request_body  = serializer.Serialize(param);
            logWs.response_body = serializer.Serialize(result);
            logWs.url           = HttpContext.Current.Request.Url.AbsolutePath;
            RepoLog.SaveLogWS(logWs);

            if (message != null)
            {
                HttpContext.Current.Response.AppendHeader("ResponseMessage", message);
            }

            return(Request.CreateResponse(httpStatus, result));
        }