public JsonResult GetCoffeeShop([FromBody] Newtonsoft.Json.Linq.JObject requestParams)
        {
            CoffeeShopViewModel item;

            if (requestParams != null)
            {
                int    productivityUnitNo = int.Parse(requestParams["productivityUnitNo"].ToString());
                int    type = int.Parse(requestParams["type"].ToString());
                int    code = int.Parse(requestParams["code"].ToString());
                string explorationStartDate = requestParams["explorationStartDate"].ToString();

                DateTime date;
                if (DateTime.TryParse(explorationStartDate, out date))
                {
                    var coffeeShop = DBCoffeeShops.GetById(productivityUnitNo, type, code, date);
                    item = DBCoffeeShops.ParseToViewModel(coffeeShop, config.NAVDatabaseName, config.NAVCompanyName);
                }
                else
                {
                    item = new CoffeeShopViewModel();
                    item.ProductivityUnitNo = productivityUnitNo;
                }
            }
            else
            {
                item = new CoffeeShopViewModel();
            }
            return(Json(item));
        }
        public JsonResult DeleteCoffeeShop([FromBody] CoffeeShopViewModel item)
        {
            ErrorHandler errorHandler = new ErrorHandler()
            {
                eReasonCode = 2,
                eMessage    = "Ocorreu um erro ao eliminar o registo."
            };

            try
            {
                if (item != null)
                {
                    bool sucess = DBCoffeeShops.Delete(DBCoffeeShops.ParseToDB(item));
                    if (sucess)
                    {
                        item.eReasonCode = 1;
                        item.eMessage    = "Registo eliminado com sucesso.";
                    }
                }
                else
                {
                    item = new CoffeeShopViewModel();
                }
            }
            catch
            {
                item.eReasonCode = errorHandler.eReasonCode;
                item.eMessage    = errorHandler.eMessage;
            }
            return(Json(item));
        }
        public JsonResult UpdateCoffeeShop([FromBody] CoffeeShopViewModel item)
        {
            if (item != null)
            {
                item.UpdateUser = User.Identity.Name;
                CafetariasRefeitórios updatedItem = DBCoffeeShops.ParseToDB(item);
                updatedItem = DBCoffeeShops.Update(updatedItem);

                if (updatedItem != null)
                {
                    item             = DBCoffeeShops.ParseToViewModel(updatedItem, config.NAVDatabaseName, config.NAVCompanyName);
                    item.eReasonCode = 1;
                    item.eMessage    = "Cafetaria / refeitório atualizado com sucesso.";
                }
                else
                {
                    item.eReasonCode = 2;
                    item.eMessage    = "Ocorreu um erro ao atualizar a cafetaria / refeitório.";
                }
            }
            else
            {
                item = new CoffeeShopViewModel()
                {
                    eReasonCode = 3,
                    eMessage    = "Ocorreu um erro ao atualizar. A cafetaria / refeitório não pode ser nulo."
                };
            }
            return(Json(item));
        }
        public JsonResult CreateCoffeeShop([FromBody] CoffeeShopViewModel data)
        {
            try
            {
                if (data != null)
                {
                    data.CreateUser = User.Identity.Name;
                    CafetariasRefeitórios itemToCreate = DBCoffeeShops.ParseToDB(data);

                    itemToCreate = DBCoffeeShops.Create(itemToCreate);

                    if (itemToCreate != null)
                    {
                        data             = DBCoffeeShops.ParseToViewModel(itemToCreate, config.NAVDatabaseName, config.NAVCompanyName);
                        data.eReasonCode = 1;
                        data.eMessage    = "Registo criado com sucesso.";
                    }
                    else
                    {
                        data.eReasonCode = 3;
                        data.eMessage    = "Ocorreu um erro ao inserir os dados na base de dados.";
                    }
                }
            }
            catch (Exception)
            {
                data.eReasonCode = 2;
                data.eMessage    = "Ocorreu um erro ao criar a cafetaria / refeitório.";
            }
            return(Json(data));
        }
        public static CoffeeShopViewModel ParseToViewModel(CafetariasRefeitórios x, string navDatabaseName, string navCompanyName)
        {
            if (x == null)
            {
                return(new CoffeeShopViewModel());
            }

            CoffeeShopViewModel result = new CoffeeShopViewModel()
            {
                ProductivityUnitNo = x.NºUnidadeProdutiva,
                Type                     = x.Tipo,
                TypeText                 = x.Tipo == 1 ? "Cafetaria" : x.Tipo == 2 ? "Refeitório" : "",
                Code                     = x.Código,
                StartDateExploration     = x.DataInícioExploração.ToString("yyyy-MM-dd"),
                EndDateExploration       = x.DataFimExploração.HasValue ? x.DataFimExploração.Value.ToString("yyyy-MM-dd") : "",
                Description              = x.Descrição,
                CodeResponsible          = x.CódResponsável,
                CodeRegion               = x.CódigoRegião,
                CodeFunctionalArea       = x.CódigoÁreaFuncional,
                CodeResponsabilityCenter = x.CódigoCentroResponsabilidade,
                Warehouse                = x.Armazém,
                WarehouseSupplier        = x.ArmazémLocal,
                ProjectNo                = x.NºProjeto,
                Active                   = x.Ativa,
                CreateDate               = x.DataHoraCriação,
                CreateUser               = x.UtilizadorCriação,
                UpdateDate               = x.DataHoraModificação,
                UpdateUser               = x.UtilizadorModificação
            };

            //Get totals
            result.TotalRevenues    = DBCoffeeShopMovements.GetTotalRevenuesFor(result.ProductivityUnitNo, result.Code, result.Type);
            result.TotalConsumption = DBProjectDiary.GetProjectTotaConsumption(result.ProjectNo);

            decimal totalMeals = DBCoffeeShopMovements.GetTotalMealsFor(result.ProductivityUnitNo, result.Code, result.Type);

            result.NumberOfMeals = totalMeals;

            return(result);
        }
        public DiscoverPage()
        {
            InitializeComponent();

            CoffeeShopViewModel csvm = new CoffeeShopViewModel();

            BindingContext = csvm;

            foreach (CoffeeShop shop in csvm.coffeeShopList)
            {
                var pin = new Pin
                {
                    Type     = PinType.Place,
                    Position = new Position(shop.position[0], shop.position[1]),
                    Label    = shop.name,
                    Address  = shop.address
                };
                map.Pins.Add(pin);
            }

            map.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(39.78284416176044, 30.51041779848248), Distance.FromMeters(500)));
        }
 public static CafetariasRefeitórios ParseToDB(CoffeeShopViewModel x)
 {
     return(new CafetariasRefeitórios()
     {
         NºUnidadeProdutiva = x.ProductivityUnitNo,
         Tipo = x.Type,
         Código = x.Code,
         DataInícioExploração = DateTime.Parse(x.StartDateExploration),
         DataFimExploração = x.EndDateExploration != "" ? DateTime.Parse(x.EndDateExploration) : (DateTime?)null,
         Descrição = x.Description,
         CódResponsável = x.CodeResponsible,
         CódigoRegião = x.CodeRegion,
         CódigoÁreaFuncional = x.CodeFunctionalArea,
         CódigoCentroResponsabilidade = x.CodeResponsabilityCenter,
         Armazém = x.Warehouse,
         ArmazémLocal = x.WarehouseSupplier,
         NºProjeto = x.ProjectNo,
         Ativa = x.Active,
         DataHoraCriação = x.CreateDate,
         UtilizadorCriação = x.CreateUser,
         DataHoraModificação = x.UpdateDate,
         UtilizadorModificação = x.UpdateUser
     });
 }